Help us understand the problem. What is going on with this article?

[GAS] Google フォームに回答が送信された時Slackに送信する

Googleformからのslack通知設定方法 - Qiita

https://qiita.com/pchan52/items/574e930a3cc42cf7f8b9
Google フォームに回答があったときSlackに回答内容を送信したいなぁと思って色々探していたら上記の記事を見つけました。
こちらの記事は丁寧でとてもわかりやすかったです。
業務でGoogle フォームをよく使うので、こちらの記事を参考に自分でも作ってみました。

function onFormSubmit(e){
  var itemResponse = e.response.getItemResponses();
  var message = '';
  for(var i = 0; i < itemResponse.length;i++){
    var title = itemResponse[i].getItem().getTitle();
    var response = itemResponse[i].getResponse()
    if(response != ''){
      message = message + title + '\n' + response + '\n';
    }
  }

  message = message + '----\n回答URL(スプレッドシート)\n';
  try{
    var destinationId = FormApp.getActiveForm().getDestinationId();
    message = message + '<https://docs.google.com/spreadsheets/d/' + destinationId + '>';
  }catch(e) {  
    message = message + 'なし';
  }

  sendToSlack(message); 
}

function sendToSlack(message) {
  var url = "https://hooks.slack.com/services/xxxxx";//incoming webhooksのURL
  var payload = {
    //"channel" :"{ChannelID or Channel Name}", //Channel指定したければ
    "blocks" : [
      {
        "type": "section",
        "text": {
          "type": "mrkdwn",
          "text" : ":clipboard: 回答がきたよ〜♪ :clipboard:"
        }
      }
    ],
    "attachments" : [
      {
        //"color" : "#FDA9E9", //色を指定したければ
        "blocks" : [
          {
            "type": "section",
            "text": {
              "type": "mrkdwn",
              "text": "```" 
              + message
              + "```"
            }
          }
        ]
      }
    ]
  }

  var options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : JSON.stringify(payload)
  };
  var response = UrlFetchApp.fetch(url, options);
}

上記のコードでは、未回答以外の回答について、フォームに設定した質問と回答がSlackに送信されます。
また、フォームに回答を書き出すスプレッドシートが紐付いていた場合、そのスプレッドシートのURLをSlackに送信するようにしました(12 ~ 15行目)。

勉強会の参加アンケートなどにもとりあえず設定すると便利そうですね。

実行結果

e72732222589a41ff6c89644d0c9935b.png
■ ~ くださいまでがフォームの質問。その次の行が回答になっています。

(余談) 普段何に使っている?

普段わたしは主にテストをやっています。
テストに入る前、開発者にテスト対象の説明をしてもらうのですが、その説明のときにGoogle フォームを使って事前にテスト対象やプロジェクトの背景を回答してもらっています。
これについては別途ブログを書いたので、興味がある方はぜひ読んでください。
http://yoshitake-1201.hatenablog.com/entry/2019/08/26/103000

普段使うほうでは、フォームの設問文がそのままSlackに流れるとつらいので以下のように、Slackに表示する設問文をカスタマイズしています。
① 以下の関数を追加

function getCustomTitle(title){
  switch (title) {
    case "■ プロジェクト名(システム名)を教えてください":
      return  '■ 案件名:\n';
    case "■ Staging環境(テスト環境)の情報を教えてください (改行入力可)":
      return  '■ Staging環境:\n';
    case "■ チケット登録をするプロジェクトのURLを教えてください(Github, Backlogなど)":
      return  '■ チケット:\n';
      //////////~~中略~~/////////////
    case "■ 何か知らせておきたいこと/伝えたいこと/気になることなどあれば教えてください(改行入力可)":
      return  '■ その他:\n';
    default:
      return 'おかしい\n';
  }
}

② 7 ~ 9行目を以下に変更

    if(response != ''){
      var customTitle = getCustomTitle(title);
      message = message + customTitle + response + '\n';
    }

参考

yoshitake_1201
メインはテストしてます。
http://yoshitake-1201.hatenablog.com/
fusic
個性をかき集めて、驚きの角度から世の中をアップデートしつづける。
https://fusic.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした