Googleフォームで申請があったら自動で担当者にSlack DMを送る方法

当ブログがオススメする

業務自動化サービスランキング

なお、業務効率化や工数削減を目指しているものの、どの業務から自動化すべきか、どのツールや手段が自社に合っているのかがあいまいな方は、「業務自動化プラン診断」をお試しください。

かかる時間は1分ほど。4つの質問に答えるだけで、あなたに最適な自動化対象業務や、推奨される自動化手段を診断してもらえます。

効率よく自社に適した業務効率化を知りたい方は、ぜひ一度お試しください。

\ 4つの質問に答えるだけ /

目次

完成形イメージ

はじめに

日々の業務で「申請が来たことをすぐ知りたい」「メールだと見逃してしまう」といった悩みはありませんか? GoogleフォームとSlackを連携させれば、フォームに回答が送信された瞬間に、担当者にSlackのダイレクトメッセージ(DM)で通知を自動送信できます。この記事では、プログラミングの知識がなくても、コピー&ペーストと簡単なクリック操作だけでこの自動化を実現する方法を、初心者向けに丁寧に解説します。業務の効率化を今すぐ始めましょう!

こんなシーンでの活用に適しています

この自動化は、以下のような場面で特に役立ちます。

①申請の迅速な対応:社内の備品購入や休暇申請など、フォームで受け付けた申請を担当者が即座に確認したい場合。

②チームでの情報共有:複数の担当者がいる場合、特定の担当者に直接通知して対応漏れを防ぎたいとき。

③メールからの脱却:メール通知だと埋もれてしまう、またはSlackを主なコミュニケーションツールとして使っている職場。

④簡単な業務効率化:プログラミング不要で、IT初心者でも手軽に自動化を導入したい場合。

Google Apps ScriptとSlackのWebhookで自動化する

メリットリアルタイム通知:フォーム送信後、すぐにSlack DMで通知が届くので、対応が早くなる。

見逃し防止:メールと異なり、SlackのDMは目立ちやすく、通知の見落としが減る。

簡単設定:コピー&ペーストと数クリックで設定可能。専門知識が不要。

カスタマイズ性:通知メッセージの内容や形式を、業務に合わせて自由に変更できる。

無料で利用可能:Googleフォーム、Googleスプレッドシート、Google Apps Scriptは無料。Slackも無料プランで利用可(有料プランでも追加機能不要)。
デメリット初期設定の手間:初心者には、Slackアプリの設定やコードの貼り付けが少し難しく感じる可能性がある。

エラー対応:トークンやメールアドレスを間違えると動作しないため、正確な入力が必要。

メンテナンス:フォームの質問や担当者が変わった場合、コードや設定を調整する必要がある。

Slack依存:Slackワークスペースが必須。Slackを使っていない環境では使えない。
難易度・面倒さ難易度:★★☆☆☆(初心者向け)
プログラミング不要で、コピー&ペーストと画面の指示に従うだけで設定可能。ただし、Slackのトークン取得やトリガー設定で少し注意が必要。
所要時間:約30~60分(フォーム作成から動作確認まで)。
慣れれば20分程度で設定完了。エラーが出た場合は、ログ確認などで追加の時間がかかる場合も。

面倒さ:★★☆☆☆
一度設定すれば自動で動くが、初回のトークン取得やコードの書き換えがやや面倒。ITに不慣れな場合は、指示をじっくり読む必要がある。
特徴ノーコードで実装可能:Google Apps Scriptのコードはコピー&ペーストでOK。プログラミングの知識は不要。

柔軟な通知内容:フォームの回答内容をそのまま通知したり、特定の質問だけを強調したり、メッセージを自由にカスタマイズ可能。

自動化:フォーム送信ごとに手動で通知する手間がなくなり、業務が効率化。

Slack DM対応:チャンネル投稿ではなく、担当者に直接DMで通知できるため、プライバシーを保ちつつ確実に届く。

無料で始められる:特別な有料ツールやサービスは不要。既存のGoogleアカウントとSlackワークスペースで完結。
価格完全無料。
Googleフォーム、Googleスプレッドシート、Google Apps Scriptは無料で利用可能。
Slackの無料プランでも動作可能。

用意するもの

①Googleアカウント:Googleフォームとスプレッドシートを使うために必要です。

②Slackワークスペース:通知を送るSlackワークスペースにアクセスできること(管理者権限があるとスムーズ)。

③PCとブラウザ:Google ChromeやFirefoxなど、普段使っているブラウザでOK。

④担当者のSlackメールアドレス:DMを送る相手のSlack登録メールアドレスを事前に確認

設定手順

🔹Step 1:Googleフォームとスプレッドシートの準備

1-1. Googleフォームを作成する

ブラウザで Googleフォーム にアクセス。

Googleアカウントでログイン(普段使っているGmailのアドレスとパスワードでOK)。

「空白のフォーム」をクリックして新しいフォームを作成。

フォームのタイトルを入力(例:「業務申請フォーム」)。

質問を追加(例:以下のような質問)。

質問1:「申請者名」(回答形式:記述式)

質問2:「申請内容」(回答形式:記述式)

質問3:「担当者メールアドレス」(回答形式:記述式、例:taro.yamada@example.com)

必要に応じて質問を増やす(例:申請日、部署名など)。

1-2. スプレッドシートに回答をリンク

上部の「回答」タブをクリック。

「スプレッドシートにリンク」ボタン(緑色のスプレッドシートアイコン)をクリック。

「新しいスプレッドシートを作成」を選択し、名前を入力(例:「申請フォーム回答」)。

「作成」をクリックすると、Googleスプレッドシートが自動で開きます。

スプレッドシートの確認

スプレッドシートに「フォームの回答 1」というシートができていることを確認。

テスト送信した回答がスプレッドシートの行に記録されているか確認(例:A列にタイムスタンプ、B列に申請者名、C列に申請内容など)。

スプレッドシートのURL(ブラウザのアドレスバーに表示されるhttps://docs.google.com/spreadsheets/…)をメモしておく。

🔹Step 2:Slackアプリの設定

SlackでDMを送信するため、Slackアプリを作成し、トークンを取得します。

2-1. Slackアプリを作成

Slack APIのページにアクセス

ブラウザで Slack API にアクセス。

「Create New App」をクリック。

「From scratch」を選択。

「App Name」に任意の名前を入力(例:「FormNotifier」)。

「Pick a workspace」で通知を送るSlackワークスペースを選択。

「Create App」をクリック。

アプリの設定画面を確認

アプリ作成後、「Basic Information」ページが表示される。

この画面は後でまた使いますので、ブラウザのタブを閉じずにとっておく。

2-2. 権限を設定

権限の追加

左メニューの「OAuth & Permissions」をクリック。

「Scopes」セクションまでスクロールし、「Bot Token Scopes」の「Add an OAuth Scope」をクリック。

以下の3つの権限を追加:

chat:write(メッセージを送信するために必要)

im:write(DMチャンネルを開くために必要)

users:read.email(メールアドレスからSlackユーザーIDを取得するために必要)

各権限は、検索ボックスに名前を入力すると選択できます。

アプリをワークスペースにインストール

ページ上部の「Install to Workspace」をクリック。

確認画面で「Allow」をクリック(Slackワークスペースの管理者権限が必要な場合、Slack管理者に依頼)。

インストール後、「Bot User OAuth Token」が表示される(例:xoxb-1234-5678-…)。

このトークンをコピーしてメモ帳などに保存(後で使います。機密情報なので共有しないでください)。

2-3. 担当者のSlackメールアドレスを確認

DMを送る担当者のSlack登録メールアドレスを準備(例:taro.yamada@example.com)。

確認方法:

Slackアプリを開き、担当者のプロフィールを開く(名前をクリック)。

「Profile」→「メールアドレス」を確認。

わからない場合、担当者に直接聞くか、Slack管理者に確認。

🔹Step 3:Google Apps Scriptの設定

Google Apps Script(GAS)を使って、フォームの回答を検知し、Slack DMを送信するプログラムを設定します。

3-1. スクリプトエディタを開く

手順1-2で作成したスプレッドシート(例:「申請フォーム回答」)を開く。

スプレッドシートのメニューから「拡張機能」をクリック。

「Apps Script」を選択。

新しいタブでGoogle Apps Scriptエディタが開く。

デフォルトコードを削除

エディタにデフォルトで書かれているコード(function myFunction() {})をすべて選択して削除。

3-2. コードをコピー&ペースト

以下のコードをコピーして、スクリプトエディタに貼り付けます。このコードは、フォーム送信時に回答を取得し、指定した担当者にSlack DMを送信します。

function onFormSubmit(e) {
  if (!e) {
    Logger.log('エラー:イベントオブジェクトが提供されていません');
    return;
  }
  const SLACK_TOKEN = 'xoxb-138498612946';
  const TARGET_EMAIL = 'taro.yamada@example.com';

  let message = '新しい申請が送信されました!\n\n';

  // スプレッドシートトリガーの場合
  if (e.namedValues) {
    for (const question in e.namedValues) {
      const answer = e.namedValues[question][0];
      message += `${question}: ${answer}\n`;
    }
  }
  // フォームトリガーの場合
  else if (e.response && e.response.getItemResponses) {
    const itemResponses = e.response.getItemResponses();
    itemResponses.forEach(response => {
      const question = response.getItem().getTitle();
      const answer = response.getResponse();
      message += `${question}: ${answer}\n`;
    });
  } else {
    Logger.log('エラー:有効なフォームまたはスプレッドシートデータがありません');
    return;
  }

  const userId = getSlackUserId(TARGET_EMAIL, SLACK_TOKEN);
  if (!userId) {
    Logger.log('エラー:ユーザーIDが見つかりません');
    return;
  }
  const channelId = openSlackChannel(userId, SLACK_TOKEN);
  if (!channelId) {
    Logger.log('エラー:チャンネルを開けませんでした');
    return;
  }
  sendSlackMessage(channelId, message, SLACK_TOKEN);
  closeSlackChannel(channelId, SLACK_TOKEN);
}

function getSlackUserId(email, token) {
  const url = `https://slack.com/api/users.lookupByEmail?email=${email}`;
  const options = {
    'headers': { 'Authorization': `Bearer ${token}` }
  };
  try {
    const response = UrlFetchApp.fetch(url, options);
    const json = JSON.parse(response.getContentText());
    if (json.ok) {
      return json.user.id;
    }
    return null;
  } catch (e) {
    Logger.log('Error fetching user ID: ' + e);
    return null;
  }
}

function openSlackChannel(userId, token) {
  const url = `https://slack.com/api/conversations.open?users=${userId}`;
  const options = {
    'headers': { 'Authorization': `Bearer ${token}` }
  };
  try {
    const response = UrlFetchApp.fetch(url, options);
    const json = JSON.parse(response.getContentText());
    if (json.ok) {
      return json.channel.id;
    }
    return null;
  } catch (e) {
    Logger.log('Error opening channel: ' + e);
    return null;
  }
}

function sendSlackMessage(channelId, message, token) {
  const url = 'https://slack.com/api/chat.postMessage';
  const payload = {
    'channel': channelId,
    'text': message
  };
  const options = {
    'method': 'POST',
    'headers': {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json; charset=UTF-8'
    },
    'payload': JSON.stringify(payload)
  };
  try {
    UrlFetchApp.fetch(url, options);
    Logger.log('Message sent successfully');
  } catch (e) {
    Logger.log('Error sending message: ' + e);
  }
}

function closeSlackChannel(channelId, token) {
  const url = `https://slack.com/api/conversations.close?channel=${channelId}`;
  const options = {
    'headers': { 'Authorization': `Bearer ${token}` }
  };
  try {
    UrlFetchApp.fetch(url, options);
    Logger.log('Channel closed successfully');
  } catch (e) {
    Logger.log('Error closing channel: ' + e);
  }
}

function setUpTrigger() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  ScriptApp.newTrigger('onFormSubmit')
    .forSpreadsheet(spreadsheet)
    .onFormSubmit()
    .create();
}

  

3-3. コードをカスタマイズ

コード内の2か所を、自分の情報に書き換えます。

SLACK_TOKENを書き換える

コードのconst SLACK_TOKEN = ‘xoxb-1234-5678-…’;の部分を、手順2-2でコピーした「Bot User OAuth Token」に置き換える。

例:const SLACK_TOKEN = 'xoxb-9876543210-1234567890-abcdefg';

トークンはxoxb-で始まる長い文字列です。コピーしたものをそのまま貼り付けてください。

TARGET_EMAILを書き換える

コードのconst TARGET_EMAIL = ‘taro.yamada@example.com’;を、DMを送る担当者のSlack登録メールアドレスに置き換える。

例:const TARGET_EMAIL = 'hanako.suzuki@company.com';

メールアドレスは正確に入力してください(間違えるとDMが送れません)。

メッセージの形式をカスタマイズ(任意)

デフォルトでは、フォームの全質問と回答が「質問: 回答」の形式で送信されます。

例:メッセージの内容を以下のように変更したい場合:

let message = ‘【緊急】新しい申請が届きました!\n申請者: ‘ + itemResponses[0].getResponse() + ‘\n内容: ‘ + itemResponses[1].getResponse();

itemResponses[0]は1番目の質問の回答、itemResponses[1]は2番目の質問の回答を指します。

必要に応じて調整してください(初心者の場合、そのままでもOK)。

3-4. スクリプトを保存

スクリプトエディタの左上にある「プロジェクト名」(デフォルトは「無題のプロジェクト」)をクリック。

名前を入力(例:「FormToSlack」)し、「OK」をクリック。

画面上部の「保存」ボタン(💾アイコン)をクリック。

3-5. 権限の承認

スクリプトエディタの「実行」ボタン(▶アイコン)をクリックし、setUpTrigger関数を選択して実行。

初回実行時に「承認が必要です」というポップアップが表示される。

「権限を確認」をクリック。

Googleアカウントを選択(スプレッドシートと同じアカウント)。

「詳細設定」→「安全でないページに移動」をクリック(GASは安全ですが、個人スクリプトは「安全でない」と表示されることがあります)。

「許可」をクリックして承認を完了。

権限の承認は初回実行時のみ必要です。

🔹Step 4:トリガーを設定

フォーム送信時にスクリプトが自動で実行されるよう、トリガーを設定します。

トリガーページを開く

スクリプトエディタの左メニューで「トリガー」(時計アイコン)をクリック。

トリガーを追加

「トリガーを追加」ボタン(右下)をクリック。

以下の設定を入力:

実行する関数を選択: onFormSubmit

実行するデプロイを選択: Head

イベントのソースを選択: スプレッドシートから

イベントの種類を選択: フォーム送信時

「保存」をクリック。

再度、権限の承認ポップアップが表示された場合、手順3-5と同様に承認。

トリガーの確認

トリガーページにonFormSubmitが表示されていれば設定完了。

許可の確認画面は初回実行時のみ表示されます。

🔹Step 5:動作確認

5-1. テスト送信

Googleフォームを開き、テスト回答を入力して「送信」をクリック。

スプレッドシートに新しい回答が追加されていることを確認。

Slackを開き、担当者のDMを確認。

例:以下のようなメッセージが届く:

新しい申請が送信されました!

申請者名: 山田太郎

申請内容: 備品購入

担当者メールアドレス: taro.yamada@example.com

5-2. エラーが出た場合の対処

スクリプトエディタでログを確認

スクリプトエディタのメニューから「表示」→「ログ」をクリック。

エラーメッセージを確認(例:「Error: ユーザーIDが見つかりません」)。

よくある質問

設定にどのくらい時間がかかりますか?

初心者でも、指示通りに進めれば30~60分で設定完了します。慣れれば20分程度です。エラーが出た場合は、ログを確認しながら修正する時間が必要です。

プログラミングの知識がなくても本当にできますか?

 はい、できます!この記事では、コードをコピー&ペーストするだけで済むように設計しています。画面の指示に従ってクリック操作を進めるだけでOKです。

複数の担当者にDMを送るにはどうすればいいですか?

コードを少し変更する必要があります。たとえば、複数のメールアドレスを配列で指定し、ループでDMを送信するコードに変更できます。初心者の場合は、IT担当者や「ジドウカ」などの自動化サービスに相談すると簡単に実装できます。

フォームの質問を変更したらどうなりますか?

質問を変更すると、スプレッドシートの列が変わるため、通知メッセージの形式が崩れる可能性があります。手順3-3の「メッセージの形式をカスタマイズ」でコードを調整してください。わからない場合は、サポートを依頼するのがおすすめです。

なかなかうまくいかないときは?

プログラミングが未経験の方にとっては少しハードルが高く「諦めるしかない⋯」と挫折するきっかけを生みかねません。

「社内で自動化したは良いものの、自分がやめたら引き継ぐ人がいない⋯」

「一つ自動化したら、他部署からも自動化を依頼されて自分の仕事が進まない⋯」

と不安な方もいますよね。

そこで、おすすめしたいのが「ジドウカ」です。

ジドウカは、これまで合計800タスク以上の業務の自動化をしてきた実績のある法人専用の自動化サービスです。

業務の一部を“タスク単位”で自動化し、【月額1万円から】安定運用できるサブスクリプション型のサービスです。 タスクを外注するため手離れもよく、技術のことが分からなくても、「こういう作業をラクにしたい」と伝えるだけで自動化することが可能です。

「わたしが自動化したい内容って自動化できるんだろうか⋯」という方には、少額・短期間での「お試し開発」があるので、お気軽にご活用ください。

まとめ

この記事では、Googleフォームに申請が送信された際に、Slackの担当者にDMで自動通知する方法を、初心者でも実装できるように詳しく解説しました。コピー&ペーストと簡単なクリック操作だけで、申請の見逃しを防ぎ、業務を効率化できます。

もし設定でつまずいたり、さらに高度なカスタマイズが必要な場合は、「ジドウカ」のようなプロの自動化サービスを活用するのもおすすめです。さあ、今日から業務の自動化を始めて、時間を節約しましょう!

自社で自動化する際によくある失敗ランキング

自動化ツールを導入すれば業務が自動化され、効率が劇的に向上する——。 そう考えている企業は多いですが、実際には多くの企業が自動化ツールを十分に活用できていません。 有名な自動化ツールであるRPAを例にあげても、導入した企業の実態は理想と大きく異なった結果となっています。

RPA導入企業の約60%が「あまり活用できていない」と回答

多くの企業がRPAを導入しているにも関わらず、約60%の企業が「期待したほど活用できていない」と感じているというデータです。これは、「導入しただけでは、業務改善につながらない」という現実を示しています。

RPAの効果を実感できない要因は『RPA開発が進んでいない』

「RPAの効果を実感できていない」と回答した企業の多くが、その理由として「RPA開発が進んでいない」「他業務・他部署への展開ができていない」ことを挙げています。   「〇〇業務はツールを導入すればすぐにラクになるはず」と思って、自社で自動化に挑戦した方も多いのではないでしょうか?しかし私たちには、こんな“あるあるの失敗談”がよく届きます。

🥇 第1位:初期設定でつまずき、結局断念…

思っていたより設定が複雑で、ツールの仕様を理解する前に挫折してしまうケース。 特にRPAツールやノーコードツールは、「慣れるまでが大変」という声が多いです。

🥈 第2位:担当者が辞めて、運用不能に…

担当者が社内で唯一のキーマンだった場合、その人がいなくなると全て止まってしまうという問題が発生します。 しかも、「誰も中身が分からないから触れない」という状況になりがち。

🥉 第3位:不具合や修正対応に時間がかかる…

自動化が止まったとき、「誰が見ればいいのか分からない」「ベンダーに相談するのも手間」という理由で、対応が後手に。 気づけばその対応に何時間も時間を取られ、本業に集中できなくなってしまうことも…。   実はよくある…自社で自動化に挑戦したときの“落とし穴” 共通するのは「すべて自社で完結しようとした」こと。 このようなケースに共通するのが、「最初から最後まで、すべて自社で完結しようとした」点です。 最初はうまくいっても、長期的に安定した自動化運用には、継続的な保守や柔軟な調整が不可欠です。

安定的に自動化したいならジドウカがおすすめ

 「ツールを入れただけ」では業務はラクになりません 「業務をラクにする自動化」のためには、設定・運用・トラブル対応まで含めてプロに任せるのが最も確実です。

ジドウカとは?

業務の一部を“タスク単位”で自動化し、月額で安定運用できるサブスクリプション型のサービスです。 技術のことが分からなくても、「こういう作業をラクにしたい」と伝えるだけでOK。

ジドウカでできること(業務例)

・定期レポートの自動作成とSlack送信 ・受注データのExcel整形とkintone登録 ・競合サイトの自動モニタリングとアラート通知 ・営業リストの自動生成とCRMへの投入 など

ジドウカが選ばれる理由

弊社の自動化サービス「ジドウカ」は、1社1社、1タスク1タスクに合わせて完全オーダーメイドで開発するサービス担っています。
  • ヒアリングから開発・運用まで丸ごとサポート
  • トラブル発生時には即時対応
  • 月額料金内で自由に修正をご依頼可能
実際に多くのお客様から「自社での自動化運用に失敗した後に依頼してよかった」と高評価をいただいています。
目次