初心者でも簡単!GASでフォームのタイムスタンプを取得する方法

GASを使って、Googleフォームのタイムスタンプを取得したいんだけど、スプレッドシートを使わずに直接取れないかな…?
猫男
猫男
catman
catman
それなら「FormApp」を使えば直接フォームの回答からタイムスタンプを取得できるぞ!フォームIDがわかればOKだ!

GASでGoogleフォームの回答タイムスタンプを取得する

Googleフォームの回答に含まれるタイムスタンプを、スプレッドシートを経由せずに直接取得するには、FormAppを使うのが効果的だ。

フォームIDの確認方法

フォーム編集画面のURLを見てみよう:

https://docs.google.com/forms/d/★ここがフォームID★/edit

この「★ここがフォームID★」に該当する部分を控えておこう。

スクリプトを作成する

GASエディタで以下のスクリプトを作成してみよう:


function getAllTimestampsFromForm() {
  const form = FormApp.openById("フォームIDをここに");
  const responses = form.getResponses();

  responses.forEach(response => {
    const timestamp = response.getTimestamp();
    Logger.log("回答日時: " + timestamp);
  });
}

💡 すべての回答に対して、Logger にタイムスタンプを出力するぞ。

実行と確認

この関数を実行すると、フォームに保存されているすべての回答の日時がログに出力される。
フォームの回答が削除されていなければ、過去の履歴も含めて取得可能だ。

フォームから直接タイムスタンプが取れるの、めちゃくちゃ便利だね!これを応用すれば集計とかにも使えそう!
猫男
猫男

フォームのタイムスタンプ活用アイデア

フォームの回答日時が取得できれば、次のような用途にも応用できる。

1. 一定期間内の回答だけ抽出

特定の日付以降の回答を絞り込むことで、最新の投稿だけを処理したり、日次・週次で分析したりできる。

2. 一番古い回答 or 最新の回答だけ取り出す

以下は最新の回答1件のタイムスタンプだけを取得する例:


function getLatestTimestamp() {
  const form = FormApp.openById("フォームIDをここに");
  const responses = form.getResponses();
  if (responses.length === 0) return;
  const latest = responses[responses.length - 1].getTimestamp();
  Logger.log("最新の回答日時: " + latest);
}

練習問題

GASを使って、Googleフォームの1件目の回答のタイムスタンプを取得する関数を書いてみよう。

 

 

解答と解説


function getFirstTimestamp() {
  const form = FormApp.openById("フォームIDをここに");
  const responses = form.getResponses();
  if (responses.length === 0) return;
  const first = responses[0].getTimestamp();
  Logger.log("最初の回答日時: " + first);
}

このスクリプトでは、FormApp.openById()で対象のフォームを開き、getResponses()で全回答を取得している。

最初の回答は配列の0番目に格納されているため、responses[0].getTimestamp()でそのタイムスタンプを取得できる。

catman
catman
この方法なら、フォームの履歴があればスプレッドシートなしでもいけるぞ。ログ管理やデータ処理も自由自在さ!