ElcamyTECH
Articles
Google

Googleフォームの回答の自動削除

TechGoogleGoogleGoogleフォームGoogle Apps ScriptGoogle Apps Script2023/11/18

はじめに

今回はGoogleフォームの回答を定期的に自動で削除する方法について解説します。今回の削除対象は回答から任意の日数が経過しているものとしています。

本編

Googleフォームの作成からApp Script を用いて回答を削除する方法を解説します。Googleフォームを既に作成済みの方は回答の削除方法の解説まで飛ばしてください。

Googleフォームの作成

まず、Google Chromeでお持ちのGoogleアカウントにログインします。右上のGoogle アプリのアイコンからフォームを選択します。

image

次に、新しいフォームを作成からフォームを作成します。新しいフォームはテンプレートを選択することも可能です。

image

最後に名前や説明、名前などを追加してフォームは完成です。質問は記述式だけでなく、チェックボックスや選択式のものなどがあります。詳しくはこちらを参照してください。

image

回答を集める

Googleフォームが完成したので、質問に回答します。右上の目のアイコンをクリックすると、回答ページのプレビューが表示されるので、そこで回答を送信することができます。また、右上の送信をクリックすることで回答用のURLの送信も可能です。

image

送信された回答はGoogleフォームの編集ページから閲覧可能です。このページのURLは後ほど必要になります。

image

メモ

スプレッドシートにリンクについて 送信された回答はGoogle スプレッドシートにリンクすることができます。しかし、一度リンクされた回答データは元の回答が削除されてもスプレッドシートからは削除されないので注意してください。

回答を削除する

まず、Googleフォームの編集ページの右上のアイコンのスクリプトエディタをクリックします。

image

次に、Apps Scriptの左のサイドバーのエディタコード.gsを編集します。すでにコード.gsでファンクションを実装している場合は、別のファイルを作成することをおすすめします。

image

メモ

コード 以下のコードをfunction myFunction(){}の部分に張り付けて置き換えてください。

function delete_response(){
  var form = FormApp.openByUrl('回答閲覧ページのURL'); // ※1
  var formResponses = form.getResponses();
 
  let date = new Date();
 
  for (var i = 0; i < formResponses.length; i++) {
    var formResponse = formResponses[i];
    var time = formResponse.getTimestamp();
    if ((date - time)/86400000 >= 90){ // ※2
      var id = formResponse.getId();
      form.deleteResponse(id);
    }
  }
}

※1 回答閲覧ページのURLの部分にはこちらのURLを張り付けてください。(URLの末尾が「responses」となっているもの) ※2 90という数字は回答が生成されてから経過している日時を表しています。任意の日時を入力してください。

最後に、プロジェクトを保存をクリックしてコードを保存してください。

自動削除

Googleフォームの回答を削除するプログラムが書けたので、これを自動で実行するようにします。 まず、Apps Scriptの左のサイドバーのトリガーに移動して、トリガーを追加をクリックします。

image

次に、必要な項目を選択してトリガーを保存します。

image

メモ

選択項目

  1. 実行する関数を選択 delete_response
  2. 実行するデプロイを選択 Head
  3. イベントのソースを選択 時間主導型
  4. 時間ベースのトリガーのタイプを選択 日付ベースのタイマー
  5. 時刻を選択 午前0時~1時

以上で工程は終了です! これで設定した経過日時に応じて、自動で回答が削除されます。

最後に

今回はGoogleフォームの回答を自動で削除する方法について解説しました。この方法を使うと意外と面倒なGoogleフォームの回答の削除を自動化することができます。また、回答の全削除ではなく、経過日時を基準に任意の回答を削除できるのがポイントです。

参考

https://support.google.com/docs/answer/6281888?hl=ja&co=GENIE.Platform=Desktop

https://developers.google.com/apps-script/reference/forms/form?hl=ja#deleteItem(Integer)

https://developers.google.com/apps-script/reference/forms/form-response?hl=ja

関連記事

Elcamyについて

AI・データエンジニアリング・クラウドを中心に、技術で事業課題を解決しています。 お気軽にご相談ください。