LoginSignup
2
2

More than 3 years have passed since last update.

【GAS】Googleフォームで回答が来た時Slackに通知を送るようにしてみた

Last updated at Posted at 2019-06-24

はじめに

GAS初心者の方はチュートリアル記事を作りましたので、良かったら読んでみてください。
GASで「Hello,World!」を出力するまでをまとめてみた。

目的

  • スプレッドシートが更新されるたびにSlackに通知がくるようにしていたが、新規入力時に項目セルごとに直書きしていたため、通知がうるさくなってしまった。
    そこで、新規入力用のフォームを作成し、回答をスプレッドシートにまとめて、フォーム側で通知処理をするようにしたかった。
  • Qiitaになんか投稿してみたかった。

実装

通知を送りたいチャンネルのWebHook URLを取得します。
手順は下記記事を参照にしました。
SlackのWebhook URL取得手順

対象のGoogleフォームを開き、その他→スクリプトエディタからGASを書いていきます。

FormApp.getActiveForm();

function myFunction(e) {
var webhook = "Webhook URL";

  var body = "Googleフォームの「" + e.source.getTitle() + "」に回答が送信されました。\n\n";
  var itemResponses = e.response.getItemResponses();
  body += "```";
  itemResponses.forEach(function(itemResponse){
    body += '' + itemResponse.getItem().getTitle() + '\n'
    body += itemResponse.getResponse() + '\n'
  });
  body += "```";

  var message = body;

  var jsonData =
 {
    "username" : "insertAlert", // ボットの名前
    "text" : message       //実際に送る内容
 };
 var payload = JSON.stringify(jsonData);
 var options =
 {
   "method" : "post",
   "contentType" : "application/json",
   "payload" : payload
 };

 // リクエストを飛ばすメソッド
 UrlFetchApp.fetch(webhook, options);
}

次に、スクリプトエディタの編集→現在のプロジェクトのトリガーから、下記のトリガーを作成します。
スクリーンショット 2019-06-23 19.19.05.png

以上です。

結果

フォームから回答を送信すると、
スクリーンショット 2019-06-23 19.44.39.png
以下の形式でSlackの該当チャンネルに通知が来るようになりました。
スクリーンショット 2019-06-23 19.46.56.png

終わりに

実装に関しては特に詰まることもなく、先駆者もたくさんいて容易にできました。
Qiitaは初投稿でしたが、インターン先でRedmineを使っていたこともありマークダウン記法に慣れていたため書きやすかったです。
今後もアウトプットを続けていけるよう頑張ります。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2