Googleフォームで各項目の回答IDを取得する方法|メールアドレスは別扱いなので注意!

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

GoogleフォームとGoogle Apps Script(GAS)を組み合わせて開発していると、 「どの項目がどの質問かをどう判別するの?」という壁にぶつかることがあります。

特に getItemResponses() で回答をループ処理する場合、 その回答がどの質問に対応するのかを知るには「項目ID(itemId)」を利用する方法が確実です。

回答ID(itemId)の取得方法

まず、以下のコードをスクリプトエディタに貼り付けて実行すると、フォームに含まれるすべての質問のタイトルとIDを一覧でログ出力できます。

スクリプトの書き方と実行方法
  1. フォームの画面右上「︙(メニュー)」→「スクリプトエディタ」を開きます。
  2. 新しいスクリプトファイルに、下記のコードを貼り付けます。
  3. 上部メニューの「関数を選択」→ logFormItemIds を選び、「▶実行」ボタンをクリック。
  4. 「表示」→「ログ」から出力されたID一覧を確認できます。
function logFormItemIds() {
  const form = FormApp.openById("フォームIDをここに記入"); // フォームIDの取得方法は下で解説
  const items = form.getItems();

  items.forEach(function(item) {
    Logger.log(`Title: ${item.getTitle()} / ID: ${item.getId()}`);
  });
}

👉ログの出力方法についてはこちらでご紹介しています。

フォームIDの取得方法

フォームのURLが次のようになっている場合、赤字部分が「フォームID」です。

https://docs.google.com/forms/d/1AbCDEFG_HIJKL1234567890abcdefg/viewform

これをopenById() に渡せば、スクリプトからそのフォームにアクセスできます。

⚠️ メールアドレスは項目IDで取得できない!

Googleフォームの設定で「メールアドレスを収集する」にチェックを入れていると、 回答者のメールアドレスが取得できますが、これは通常の項目とは別扱いです。

そのため、getItems() で一覧を出しても、メールアドレスの項目は表示されません。

📌 メールアドレスを取得するにはこちらを使います:

  const email = e.response.getRespondentEmail();
  Logger.log("送信者メールアドレス:" + email);

メールアドレスだけは特別扱いされている点に注意しましょう。

回答内容をIDで振り分けたいとき

スクリプト内で各項目の値を正確に仕分けたいときは、以下のように書きます。
(例)itemID=1234567890だったら、lastNameという項目に値をセット

for (const itemResponse of e.response.getItemResponses()) {
  const itemId = itemResponse.getItem().getId();
  const answer = itemResponse.getResponse();

  if (itemId === 1234567890) {
    response.lastName = answer;
  }
}

このようにIDで判断すれば、項目順が入れ替わってもスクリプトが壊れません。

📬 SendGridでメールを送る方法は別記事で解説します!

回答内容を使って、ユーザーに自動返信メールを送る仕組みを作ることもできます。 その際は、SendGridと組み合わせてAPI経由でメール送信する方法が便利です。

この部分については、別記事で詳しく紹介します👇

▶ [GASとSendGridで自動返信メールを送る方法(近日公開)]

まとめ

  • Googleフォームの項目IDは form.getItems() で取得できる
  • フォームIDはURLから取得可能(openById() を使う)
  • メールアドレスは getRespondentEmail() で取得(項目ではない)
  • 項目IDで処理を分けると、順番変更に強くなる

回答フォームの内容を利用してGASと連携する際の第一歩として、ぜひ覚えておきましょう!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次