テックブログ

エルカミーの技術ブログです

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

はじめに

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

本編

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

Googleフォームの作成

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

image block

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

image block

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

image block
回答を集める

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

image block

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

image block
💡
スプレッドシートにリンクについて

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

回答を削除する

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

image block

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

image block
📌
コード

以下のコードを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 block

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

image block
📌
選択項目
  1. 実行する関数を選択

    delete_response

  2. 実行するデプロイを選択

    Head

  3. イベントのソースを選択

    時間主導型

  4. 時間ベースのトリガーのタイプを選択

    日付ベースのタイマー

  5. 時刻を選択

    午前0時~1時

以上で工程は終了です!

これで設定した経過日時に応じて、自動で回答が削除されます。

最後に

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

参考