前提・実現したいこと
Googleフォームからslackに通知できるよう設定しようとしています
Googleフォームとslackは連携出来ているようですが、フォームに入力した内容が反映出来ません。
発生している問題・エラーメッセージ
通知を飛ばしたいチャンネルには「心理検査が予約されました」のみ通知されます。
該当のソースコード
GAS
1function sendToSlack(fallback, fields, channel) { 2 const url = "https://hooks.slack.com/services/*****/*****1/********" 3 const data = { 4 "channel" : channel, 5 "username" : "ネコちゃん", // 1: bot 名 6 "attachments" : [{ 7 "fallback" : fallback, 8 "text" : "心理検査が予約されました", 9 "fields": fields, 10 "color": "good", // 3: 左線の色 11 }], 12 "icon_emoji" : "https://*****.slack.com/services/*****1" // 2: アイコン画像 13 }; 14 const payload = JSON.stringify(data); 15 const options = { 16 "method" : "POST", 17 "contentType" : "application/json", 18 "payload" : payload, 19 "muteHttpExceptions": true, 20 }; 21 const response = UrlFetchApp.fetch(url, options); 22 Logger.log(response) 23} 24 25function test() { 26 sendToSlack("テスト通知確認です", [], "#16-会議メンバー共有事項"); 27} 28 29function responseToText(itemResponse) { 30 switch (itemResponse.getItem().getType()) { 31 case FormApp.ItemType.CHECKBOX: 32 return itemResponse.getResponse().join("\n"); 33 break; 34 case FormApp.ItemType.GRID: 35 const gridResponses = itemResponse.getResponse(); 36 return itemResponse.getItem().asGridItem().getRows().map(function(rowName, index) { 37 Logger.log(rowName); 38 return rowName + ": " + gridResponses[index]; 39 }).join("\n"); 40 break; 41 case FormApp.ItemType.CHECKBOX_GRID: 42 const checkboxGridResponses = itemResponse.getResponse() 43 return itemResponse.getItem().asCheckboxGridItem().getRows().map(function(rowName, index) { 44 Logger.log(rowName); 45 return rowName + ": " + checkboxGridResponses[index]; 46 }).join("\n"); 47 break; 48 default: 49 return itemResponse.getResponse(); 50 } 51} 52 53function onFormSubmit(e){ 54 var body = "Slack通知テストフォームが来たよ!\n"; 55 var applicant = ""; 56 var itemResponse = e.response.getItemResponses(); 57 58 for (var j = 0; j < itemResponse.length; j++){ 59 var formData = itemResponse[j]; 60 var title = formData.getItem().getTitle(); 61 var response = formData.getResponse(); 62 63 switch (title) { 64 case "被験者ID": 65 id = response; 66 break; 67 case "予約日": 68 date = response; 69 break; 70 case "曜日": 71 content = response; 72 break; 73 case "検査名": 74 content = response; 75 break; 76 case "備考1": 77 content = response; 78 break; 79 case "備考2": 80 content = response; 81 break; 82 default: 83 break; 84 } 85 } 86 var bodyPublic = body + "被験者ID:" + id + "\n予約日:" + date + "\n曜日:" + content + "\n検査名:" + content + "\n備考1:" + content + "\n備考2:" + content ; 87 sendToSlack(bodyPublic, "#16-会議メンバー共有事項"); 88} 89 90 91
修正したところ、Googleフォーム送信時に内容が連携されましたが、response内容が誤って反映されます
function sendToSlack(body, channel) { var url = "https://hooks.slack.com/services/●●●●●"; var data = { "channel" : channel, "username" : "ネコちゃん", "text" : body, "icon_emoji" : ":date: " }; var payload = JSON.stringify(data); var options = { "method" : "POST", "contentType" : "application/json", "payload" : payload }; var response = UrlFetchApp.fetch(url, options); } function test() { sendToSlack("テスト通知確認です", "#16-会議メンバー共有事項"); } function onFormSubmit(e){ var body = "<! @●●● >心理検査が予約されました!\n"; var applicant = ""; var itemResponse = e.response.getItemResponses(); for (var j = 0; j < itemResponse.length; j++){ var formData = itemResponse[j]; var title = formData.getItem().getTitle(); var response = formData.getResponse(); switch (title) { case "被験者ID": date = response; break; case "予約日": name = response; break; case "曜日": language = response; break; case "検査名": language = response; break; case "備考1": language = response; break; case "備考2": language = response; break; default: break; } } var bodyPublic = body + "被験者ID:" + date + "\n予約日:" + name + "\n曜日:" + language + "\n検査名:" + language + "\n備考1:" + language + "\n備考2:" + language ; sendToSlack(bodyPublic, "#16-会議メンバー共有事項"); }
### ”●●● = response” の●●●部分を修正したら反映出来ました
switch (title) { case "被験者ID": date = response; break; case "予約日": name = response; break; case "曜日": language = response; break; case "検査名": kensamei = response; break; case "備考1": bikou1 = response; break; case "備考2": bikou2 = response; break; default: break; } } var bodyPublic = body + "被験者ID:" + date + "\n予約日:" + name + "\n曜日:" + language + "\n検査名:" + kensamei + "\n備考1:" + bikou1 + "\n備考2:" + bikou2 ; sendToSlack(bodyPublic, "#16-会議メンバー共有事項"); }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/20 07:11
2020/03/20 07:41