Googleフォームを自動で受付終了にする方法(時間指定・件数指定)

非常に多機能で便利なGoogleフォームですが、標準機能だけでは、フォームを自動的に閉じる(受付終了にする)ことができません。

結構需要があると思うのですが・・・

・・・ということで、この記事では、フォームを自動で受付終了状態にする方法を説明します。
Google Apps Scriptを使用する手順にはなりますが、とても簡単なので身構えずにご覧いただければと思います。

(おまけとして、自動的に受付開始する方法も掲載しています。)

受付終了時のメッセージを設定する

まずは、回答の受付が終了した際に表示するメッセージを設定しておきます。

回答タブを選択し、受付終了の状態にし、回答者へのメッセージを設定しましょう。

Googleフォームで受付終了のメッセージを設定する
受付終了のメッセージをあらかじめ設定しておく

メッセージの設定が完了したら、回答を受付中の状態に戻しておきましょう。

Googleフォームで回答を受付中にする

受付終了にするスクリプトを作成する

次に、自動的に受付終了状態にするためのスクリプトを作成します。

メニューを開き、スクリプトエディタを押します。

Googleフォームでスクリプトエディタを起動する

スクリプトエディタが起動したら、

①スクリプトの名前を付ける(任意)→ ②下記のスクリプトを貼り付ける → ③保存

の順に行います。

Googleフォームを受付終了状態にするスクリプト

貼り付けるスクリプトはこちら。

function closeForm() {
  const form = FormApp.getActiveForm();
  form.setAcceptingResponses(false);
}

スクリプトを保存したら、▷実行ボタンを押します。

すると、承認が求められますので、権限を確認を押して、画面の指示にしたがって承認していってください。

Google Apps Scriptの権限を確認

この後、アカウントの選択が表示されるので、自分のアカウントを選ぶ。
~~ が Google アカウントへのアクセスをリクエストしていますが表示されたら許可する。

ここまでの操作で、フォームを閉じるスクリプトが実行されましたので、フォームをプレビューして確認してみます。

受付終了の状態になっていれば成功です。

Googleフォームが受付終了状態になった

ここまでで、動作検証はできたので、回答受付状態に戻しておきましょう。

トリガーを設定する(時刻指定)

フォームを受付終了状態にするスクリプトができたので、そのスクリプトが指定時刻に自動実行されるようにします。

メニュー → トリガー → トリガーを追加の順に選択します。

Googleフォームを自動で受付終了にするためにトリガーを設定する

下図のように設定してください。
日時を入力(GMT+09:00)の部分に、フォームを受付終了にしたい日時を入力してください。

ちなみに、私が試した感じでは24:00は指定できませんでした。
そのため、翌日の00:00を指定しました。

Googleフォームを自動で受付終了にするためのトリガーの内容

以上で、指定時間になったら自動的にフォームを受付終了にする設定は完了です。

なお、実行数のメニューから、実行結果を確認することができます。
私の例では、2022/04/30 0:00:01に実行されたことが確認できました。

Googleフォームを自動で受付終了にするスクリプトの実行履歴

おまけ:所定の回答件数に達したらクローズする

時間指定でフォームをクローズする以外に、所定の回答件数に達したらクローズすること等も可能です。

参考までに、コードとトリガーの設定を記載しておきます。

コードの3行目のlimit = 10は、10件受け付けたらフォームがクローズすることを意味していますので、使用する場合は、ご希望の数字に変更してください。

function closeForm() {
  const form = FormApp.getActiveForm();
  const limit = 10;
  const responses = form.getResponses();
  if (responses.length === limit){
    form.setAcceptingResponses(false);
  }
}
Googleフォームを自動で受付終了にするためにトリガーを設定する

おまけ:自動的に受付開始するスクリプト

フォームを受付開始にするスクリプトは下記のとおりです。

function openForm() {
  const form = FormApp.getActiveForm();
  form.setAcceptingResponses(true);
}

関数の名前を変えたのと、form.setAcceptingResponsesの引数をfalseからtrueに変えただけですね。

トリガーを設定する際に、実行する関数を選択openFormを指定してください。

コメント

タイトルとURLをコピーしました