メディア掲載: レバテックフリーランス様のサイトで当ブログが紹介されました

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

の順に行います。(最初に入力されている function myFunction … は全て削除して構いません)

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

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

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

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

「承認が必要です」というダイアログが表示されますので、権限を確認 をクリックします。
* この部分の解説画像は、他の記事から流用しているため、実際のものと若干異なる場合があります。

このスクリプトを使うGoogleアカウントを選択します。

(この画面が表示された場合のみ)左下の 詳細 をクリックします。

(この画面が表示された場合のみ)左下の プロジェクト名(安全ではないページ)に移動 をクリックします。

右下の 許可 をクリックします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function closeForm2() {
  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を指定してください。

おまけ:フォームを閉じた時にメールで通知する

スクリプトを少し変えれば、メールで通知を送ることもできます。

function closeForm() {
  const form = FormApp.getActiveForm();
  form.setAcceptingResponses(false);
  const recipient = "送信先のメールアドレス"
  const subject = "メールの件名"
  const body = "メールの本文"
  GmailApp.sendEmail(recipient, subject, body) 
}

上記のスクリプトで、フォームを閉じた後にメールを送ることができます。
“送信先のメールアドレス”、”メールの件名”、”メールの本文”の部分は、好きな内容に変更してください。

もう少し工夫すると、メールの中に、フォームのタイトルや、回答閲覧用のURLを入れるなど、いろいろできます。

function closeForm() {
  const form = FormApp.getActiveForm();
  form.setAcceptingResponses(false);
  const formName = form.getTitle()
  const url = form.getEditUrl() + "#responses"
  const recipient = "to-address@example.com"
  const subject = formName + "が受付終了になりました。"
  const body = formName + "が受付終了になりました。\n以下のURLで確認してください。\n" + url
  GmailApp.sendEmail(recipient, subject, body) 
}

上記コードで送信されたメールはこんな感じです。

コメント

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