フォーム送信時トリガーを設定できるスクリプトエディタは2つある
Form内のスクリプトエディタ
Formの編集画面右上の3つの点のボタンをクリックし表示される「スクリプトエディタ」内で設定することが出来ます。
ただ、次の方法のほうがスプレッドシートに回答が書き込まれデータの管理がしやすいのでおすすめです。
Form回答スプレッドシート内のスクリプトエディタ
Formの編集画面「回答」タブ内「スプレッドシートにリンク」からスプレッドシートを作成します。
回答されるたび、このスプレッドシートに1行ずつ追記されていくようになります。
作成されたスプレッドシートの「拡張機能」タブ「Apps Script」をクリックし表示される「スクリプトエディタ」内で設定することが出来ます。
以降に記載する、回答の値の取得処理はこちらに関するものです。
フォーム送信時トリガー設定方法
トリガーで実行する関数の用意
まず、トリガーで実行するための関数を用意します。
コード.gs を編集し以下のコードを記載します(トリガー実行確認用の仮のコードです)
function submitForm(event) {
console.info(event.namedValues);
console.info("form送信されました。");
}
トリガー設定
Form回答スプレッドシート内のスクリプトエディタでトリガーを設定していきます。
画面左の時計マーク「トリガー」をクリックし、「トリガーを追加」をクリックします。
・実行する関数を選択:実行したい関数を選択
・実行するデプロイを選択:バージョンを指定したい場合はここで設定します。
Head
を指定すると現在の最新のコードが実行されます。
・イベントのソースを選択:スプレッドシートから
・イベントの種類を選択:フォーム送信時
を選択し保存します。
それでは、実際にFormを送信してトリガーが動作するか見てみましょう。
Form送信
Formに入力して送信ボタンを押すと
無事、トリガーが動作していることが確認できました。
Formの回答をGASで取得する
Formの値はnamedValuesというオブジェクトに入っている
トリガーが実行されると event
に回答などの情報が設定され関数に渡されます。
その中の namedValues というオブジェクトに
key: Formの項目名
Value: Formの入力値の配列
の形式で入っています。
Form項目名 | 入力値 |
---|---|
記述式項目 | "回答" |
ラジオボタン項目 | "選択肢 1" を選択 |
チェックボックス項目 | "選択肢 1", "選択肢 2" を選択 |
というようにForm入力された場合、namedValuesは以下のようなオブジェクトになります。
{
'チェックボックス項目': [ '選択肢 1, 選択肢 2' ],
'ラジオボタン項目': [ '選択肢 1' ],
'タイムスタンプ': [ '2025/01/19 1:09:38' ],
'記述式項目': [ '回答' ]
}
質問名を指定して値を取得する
"タイムスタンプ"と"ラジオボタン項目"の回答を取得したい場合は
function submitForm(event) {
const namedValues = event.namedValues;
const timeStamp = namedValues["タイムスタンプ"][0];
const answer = namedValues["ラジオボタン項目"][0];
console.info(timeStamp); //'2025/01/19 1:09:38'
console.info(answer); //'選択肢 1'
}
というようすれば取得できます。
参考