しるてく

技術的な話をします

Google Form送信時に情報をslackに通知をする

そういう機能が欲しかったのでGAS書いた。

手順

1. フォームを作る

適当に好きなフォームを作る。

2. スクリプトエディタからGASを書く

f:id:ofsilvers:20170816141110p:plain:w250

画面右上のメニューから選択する。

3. スクリプト書く

function onFormSubmit(e) {
  sendToSlack(e);
}

function sendToSlack(e) {
  var token = 'FIXME'; // your token
  var channel = 'FIXME'; // e.g. '#random'
  var username = 'FIXME';
  var icon_emoji = 'FIXME'; // e.g. ':beer:'
  
  var payload = {
      'token' : token,
      'channel' : channel,
      'text' : createText(e),
      'username' : username,
      'parse' : 'full',
      'icon_emoji' : icon_emoji
  };

  var params = {
      'method' : 'post',
      'payload' : payload
  };

  var response = UrlFetchApp.fetch('https://slack.com/api/chat.postMessage', params);
}

function createText(e) {
  return '適当なメッセージ';
}

4. トリガを設定する

f:id:ofsilvers:20170816141743p:plain

スクリプトエディタの時計みたいなところから以下のような感じでトリガを設定する。

f:id:ofsilvers:20170816141827p:plain

投稿内容の取得例

Class FormResponse  |  Apps Script  |  Google Developers

投稿した人

  var mail = e.response.getRespondentEmail();
  var user = mail.split('@')[0];

もし会社とかでドメインが一緒なら@以前がおそらく社員の名前。

投稿内容

  var res = e.response.getItemResponses();
  var target = res[0].getResponse(); // 1個目の質問の回答
  var comment = res[1].getResponse(); // 2個目の質問の回答