フォームの回答をSlackに通知させたいです。
下記サイトを参考にし、その通りスクリプト組みましたがエラーになってしまいます。
https://qiita.com/pchan52/items/574e930a3cc42cf7f8b9
エラーの内容としては
エラー TypeError: undefined のメソッド「getItemResponses」を呼び出せません。 at onFormSubmit(コード:19)
こちらの記事に記載されているコードとほぼ同じ(質問内容に合わせて変更してある)ですが念の為私が作成したコードも添付します。
function sendToSlack(body, channel) { var url = "①"; var data = { "channel" : channel, "username" : "Googleフォーム Bot", "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 onFormSubmit(e){ var body = "Slack通知テストフォームが来たよ!\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 "好きな歌": date = response; break; case "好きな人": name = response; break; default: break; } } var bodyPublic = body + "好きな歌:" + date + "\n好きな人:" + name; sendToSlack(bodyPublic, "#②"); }
※①にSlackのWebhookURL、②にSlackのチャンネル名が入ります。
※フォームの内容は
1.好きな歌
2.好きな人
※スクリプトはフォームの編集画面のスクリプトエディタに記載しています。
※関数は「onFormSubmit」を選択し、トリガーの設定も行なっております。
どなたかご教示をお願い致します。
Logger.logまたはConsole.logまたはメールなどによって、eを取得した結果を質問に追記していただくことは可能ですか?
トリガーを設定しなおしてもうまく動作しませんか?
https://qiita.com/yando/items/7e7bbb0be2ef9e08427e
https://teratail.com/questions/162955
↑この方も似たような質問をしており、僕はこの方と全く同じコードを動作させることができました。トリガーか、権限の問題だと思っています。
「responseが読み取れない」という場合と、「getItemResponseが読み取れない」という場合は「似た」状況とは思いません。qiitaの記事が現在も有効なら可能性はありますが、そこの問題であれば、スクリプトのファイルメニューから、プロジェクトのプロパティ→スコープと見ることで判明します。
あなたの回答
tips
プレビュー