【GAS】Google Apps ScriptでGoogleフォームから送信されたデータを取得する方法

  • 2021年5月31日
  • 2021年8月20日
  • GAS
  • 16040View

データ取得の流れ

今回はGoogleフォームからデータを取得する方法を紹介しますが、データの流れとして、Googleフォームからスプレッドシートに転送してGoogle Apps Script でデータの取得を行います。

スプレッドシートをGoogle Apps Scriptで編集するすることができる方は、応用することができるので、実践してみてください。

実践

Googleフォームとリンクしたスプレッドシートの作成

ご自身のGoogle Driveにアクセスをしてください。

「新規」または「右クリック」から 「Google フォーム」 をクリックしてGoogleフォームを作成します。

無題のフォームが作成されますので、適当な質問を作成してください。

私の場合は「1質問」「2質問」「3質問」として全て「記述式」を選択しました。

続いてページ上部にある「回答」をクリックしてください。

切り替わった表示の中にスプレッドシートのアイコンがありますのでそちらをクリックしてください。

回答先の選択」という見出しの表示から「作成」をクリックしてください。

これでGoogleフォームの回答とリンクしたスプレッドシートの作成が完了しました。

プログラムの書き込み

先ほど作成したスプレッドシートのメニューから「ツール」>「スクリプトエディタ」をクリックしてください。

function onFormSubmit(e) {
  Logger.log(JSON.stringify(e));
}

続いてコードエディタに上記のコードを貼り付けてください。

これでプログラムの書き込みは終了です。

トリガの設定

先ほど書き込んだプログラムをフォーム送信と同時に実行するためにトリガーを設定します。

コードエディタ左側にある「時計」マークをクリックしてください。

続いて画面右下にある「+ トリガーを追加」をクリックしてください。

表示される項目の中で1箇所修正するポイントがありますので、そちらを変更します。

イベントの種類を選択」から「フォーム送信時」を選択してください。

これを選択することによってフォーム送信時に先ほどのプログラムが実行されるようになります。

最後に右下にある「保存」をクリックしてください。

この際に、承認を求められますので、それについてはこちらの記事を参考にしてください。

関連記事

承認はどこで求められる? Google Apps Script をスクリプトエディタでコーディングし、実行する際に求められます。 Google Apps Script のみで完結する処理では承認は求められませんが、スプレッドシートや[…]

これでトリガーの設定は終了です。

フォームのテスト送信

準備が完了したところでフォームの送信を行います。Googleフォームを開いてください。

右上にある「」のマークをクリックしてください。

開かれるフォームにテストとして適当な回答をしてください。回答が終了したら「送信」を押してください。

送信を押すと、サンクスページが表示されるので、これで送信完了です。

送信データの確認

回答の保存先として先ほど作成したスプレッドシートを開いてください。

タイムスタンプを加えて先ほどのフォームへの回答が記録されているかと思います。

GASでの送信データの確認

スクリプトエディタを開いてください

続いて画面左側のメニューの中から「実行ログマーク」をクリックしてください。

表示された実行履歴をクリックしてください。表示されるデータについて次に解説をしていきます。

実行結果の解説

実行結果

{
  "authMode":"FULL",
  "namedValues":
  {
    "タイムスタンプ":["2021/05/28 12:20:58"],
    "3問目":["テスト3"],
    "1問目":["テスト1"],
    "2問目":["テスト2"]
  },
  "range":
  {
    "columnEnd":4,
    "columnStart":1,
    "rowEnd":2,
    "rowStart":2
  },
  "source":{},
  "triggerUid":"1234567",
  "values":["2021/05/28 12:20:58","テスト1","テスト2","テスト3"]
}

私の場合、実行結果のログでは上のように表示されました。

function onFormSubmit(e) {
  Logger.log(JSON.stringify(e));
}

プログラムは上記のものでしたので、 e の中身がログに表示されていることになります。

データの抽出

実行結果は JSON という形式を採用しているので、フォームの各質問に対しては次のようにして抽出することが可能になります。

質問の名前を指定する場合

let Data = e.namedValues["<質問名>"];

質問名にはフォームで作成した質問の名前を置き換えてください

質問の順番に取得する場合

let Data = e.values[数値]; // 0~ の数値を指定

数値には0から始まる数値を入力してください。なお、0を入力するとタイムスタンプを取得します。

また、一つ目の質問の回答が欲しい場合は1を入力します。

 

これで回答の取得に関する説明を終了します。

今回紹介したコード以外について

Googleが用意していくれている公式リファレンスを参考にしました。とてもわかりやすいものになっています。

Google for Developers

Develop high-quality, cloud-based solutions with ease.…

全編が英語である点や、オブジェクト指向の理解が浅い状態では、うまく利用することが難しいです。

本ブログでは、今後もGoogle Apps Scriptのリファレンスの解説や、学び方・ツール作成について発信していきます。

ご興味ある方はお気に入り登録などお願いします。

最新情報をチェックしよう!