回答にあたって
GASからチャットワークへの転送は成功しているとのことなので、フォームに回答があったタイミングでその内容をGASで取得する方法を回答させていただきます。
スプレッドシートに展開し
このあたりは考慮していませんので問題があれば返信をお願いします。
GASでフォーム送信時に内容を取得する方法
これを行うためにはフォーム上にスクリプトを作成し、トリガー機能を利用しフォーム送信時にイベントを発生させます。
フォーム上にスクリプトを作成する
フォームの編集画面で ...
ボタンを押し、スクリプトエディタ
を選択。
(画面が狭いとスクリプトエディタメニューが表示されないので注意してください。)
トリガーで実行される関数を定義する
スクリプトエディタのコード.gsに以下の関数を定義します。
js
1function onSubmit(e) {
2 let itemResponses = e.response.getItemResponses();
3 for (var j = 0; j < itemResponses.length; j++) {
4 var itemResponse = itemResponses[j];
5 Logger.log('質問 : "%s", 回答 : "%s"',
6 itemResponse.getItem().getTitle(),
7 itemResponse.getResponse());
8 }
9}
10
ここでは一例として受け取った回答をログに記録するコードを書きました。
適宜必要な回答を抜き出してチャットワークへ転送するコードへ書き換えてください。
e.response
は FormResponse
クラスのインスタンスです。利用可能なプロパティは 公式ドキュメント を参照してください。
トリガーを定義する
スクリプトエディタの左側メニューのトリガー
をクリックし、+ トリガーを追加
ボタンをクリック
実行する関数を選択
から上で定義した関数を選択。(コードを保存していないと表示されないので注意してください。)
イベントの種類を選択
からフォーム送信時
を選択
保存
ボタンをクリック
- トリガー作成画面に戻って改めて保存ボタンを押してください。
- トリガー作成に成功すると以下のような画面になるはずです。
動作の確認
ここまでできたらフォーム編集画面のプレビューから適当な回答を送ってみてください。
スクリプトエディタの左側メニューの実行数
をクリックすると、項目が一つ追加されます。
コードにエラーがない場合はステータスが完了になります。項目をクリックするとCloudのログ
にLogger.logで出力した内容が記録されているはずです。(表示されない場合は追加の設定が必要かもしれません。)
コードに問題がある場合はステータスが失敗しましたとなり、エラーメッセージが表示されます。
チャットワークへのメッセージ送信
チャットワークへのメッセージ送信まで考慮すると以下のようなコードになります。
js
1function onSubmit(e) {
2 let itemResponses = e.response.getItemResponses();
3 let message = itemResponses[0].getResponse();
4
5 postMessage(message);
6}
7
8function postMessage(message) {
9 let CW_ROOM_ID = "チャットワークのID";
10 let CW_TOKEN = "チャットワークのAPI TOKEN";
11 let POST_TEXT = "相談内容が入力されました:\r\n" + message;
12 // 送信データ
13 let params = {
14 headers: { "X-ChatWorkToken": CW_TOKEN },
15 method: "post",
16 payload: {
17 body: POST_TEXT
18 }
19 };
20 let url = "https://api.chatwork.com/v2/rooms/" + CW_ROOM_ID + "/messages";
21 UrlFetchApp.fetch(url, params);
22}
23
ただし、let message = itemResponses[0].getResponse();
の部分は、質問内容の1番目の文字列を取得するという動作になります。
お作りになられたフォーム次第で[]の中の数字を変更する必要があります。
フォームに投稿せずに動作を確認したい場合は以下の関数を定義してスクリプトエディタから実行してください。
js
1function testOnSubmit() {
2 let form = FormApp.getActiveForm();
3 var formResponses = form.getResponses();
4 onSubmit({ response: formResponses[0] });
5}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/15 09:43
2021/07/15 10:02
2021/07/15 10:14
2021/07/15 12:40
2021/07/15 12:48
2021/07/15 15:25
2021/07/16 07:28
2021/07/16 11:13
2021/07/19 01:16
2021/07/19 04:15
2021/07/19 07:21