Googleフォームが入力されたら即座にSlackに通知が来る方法(#GAS)

みなさん、こんちには

【[watnowテックカレンダー](bit.ly/watnowTechCal2021_4)の24日目】
今日はwatnowのがゆう担当します
よろしくお願いします！！😊


フォームが入力されたか、されてないか毎度確認するのは面倒ですよね？
今回はGoogleフォームが入力されたらSlackに通知が来る方法をかいてみます！


####`Slack通知イメージ`

![スクリーンショット 2021-04-24 8.02.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407730/f8db7185-be70-2c46-ffb1-f60ab557026f.png)

##準備編
- <a href="https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-%E3%81%A7%E3%81%AE-Incoming-Webhook-%E3%81%AE%E5%88%A9%E7%94%A8">SlackとWebhookを連携</a>
- <a href="https://qiita.com/vmmhypervisor/items/18c99624a84df8b31008">SlackのWebhook URL取得</a>
- Googleフォーム作成
- **GoogleAppsScriptを開く**
 - (Googleフォーム→『・・・』→スクリプトエディタ)
 
##実践編(コード)
######`エディタ① -Slack通知設定-`

```js
function notifySlack(event){  
  
var applicant = "";
var itemResponse = event.response.getItemResponses(); 

var name = itemResponse[0].getResponse();
var univ = itemResponse[1].getResponse();
var fac = itemResponse[2].getResponse();
var year = itemResponse[3].getResponse();
```

>
- <font color="MediumBlue">event</font> :イベント
- <font color="MediumBlue">response</font>:反応があった時
- <font color="MediumBlue">getItemResponses</font>:アイテムを取得する
- <font color="MediumBlue">itemResponses[0]</font>:googleFormの一番上の情報
 - []←の中にフォームの上から何番目の情報が欲しいか書く
 - 0からスタートするから２行目は[1]
- <font color="MediumBlue">getResponse</font>:取得



######`エディタ② -通知する内容-`
```js

 var body = "@channel\n入団希望者が現れました✨✨✨\n\n"; 

 var bodyPublic = 
  "名前:" + name + 
  "\n大学:" + univ + 
  "\n学部:" + fac + 
  "\n学年:" + year;

body += bodyPublic ;
```

>
- <font color="MediumBlue">\n</font>：改行
- <font color="MediumBlue">var body</font>：ここに、固定文を書く
- <font color="MediumBlue">var bodyPublic</font>：固定文 ＋ エディタ①で定義したものを書く
- - <font color="MediumBlue">body += bodyPublic</font>：最後に合体する

######`エディタ③ -Slack通知設定-`
```js
var payload = {
'username' : '入団希望者BOT',
'text':body,
'channel':'#project-watnow'
};

var options = {
 "method" : 'post',
    'content-type' : "application/json",
    "payload" : JSON.stringify(payload)

};

var url = 'https://hooks.slack.com/services/××××××××××××××';
UrlFetchApp.fetch(url, options);

```

>
- <font color="MediumBlue">'username'</font>：SlackのBotの名前
- <font color="MediumBlue">'text'</font>：エディタ②で定義したbodyを入れる
- <font color="MediumBlue">'channel'</font>：通知が来るチャンネル名を入れる
- <font color="MediumBlue">url</font>：準備編で取ってきたURLを入れる

※var optionsより後ろの部分はコピペで問題なし🙆‍♀️
覚えなくて大丈夫です


######`完成形`

```js
function notifySlack(event){  
  
var applicant = "";
var itemResponse = event.response.getItemResponses(); 

var name = itemResponse[0].getResponse();
var univ = itemResponse[1].getResponse();
var fac = itemResponse[2].getResponse();
var year = itemResponse[3].getResponse();


 var body = "@channel\n入団希望者が現れました✨✨✨\n\n"; 

 var bodyPublic = 
  "名前:" + name + 
  "\n大学:" + univ + 
  "\n学部:" + fac + 
  "\n学年:" + year;

body += bodyPublic ;
var payload = {
'username' : '入団希望者BOT',
'text':body,
'channel':'#project-watnow'
};

var options = {
 "method" : 'post',
    'content-type' : "application/json",
    "payload" : JSON.stringify(payload)

};

var url = 'https://hooks.slack.com/services/××××××××××××××';
UrlFetchApp.fetch(url, options);
}
```
##実践編(トリガー)

⚠️自動で毎回フォームが入力されたら即座にSlackに通知が来るようにするためにはトリガーの設定は必須！
<img width="500"alt="sheet1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407730/e8dc194f-58ac-0d43-fd23-749cde8dc4c1.png">

必ず、イベントの種類を選択を『フォーム送信時』に設定してください。

##以上
いかがでしたでしょうか？！
これで作業効率をあげてください😊✨


また、
学生IT団体watnowについてもっと知りたい！って方はこちらも見てね💓　

note:http://bit.ly/note_watnow
Twitter:https://bit.ly/watnow_twitter

参考URL：https://developers.google.com/apps-script