Googleフォームを指定時間に回答可能にしたり、回答数上限に達したら受付終了にしたりしたい
じゃぐたくです。
様々なイベントやアンケートなどで活用されているGoogleフォーム。
基本的には手動で回答受付中か受付終了かを切り替えると思います。
ジャグリングのイベントでの活用方法としては大会エントリーで使用することが多い印象です。私もよく利用します。
特に先着順で受付を行うイベントでは、受付開始1分以内に参加枠が埋まってしまうということが発生しています。
直近でも21時に大会エントリー受付が開始されて21時1分には全ての部門が定員に達したという大会がありました。
このような状況になると、Googleフォームの操作で以下のようなことに困りそうだと思いました。
- 受付開始を手動で行うことのリスク
- 定員に達した時に受付終了に切り替えるのが難しい
これを解決できないかと考えて調べてみると、Google Apps Scriptを使えば解決できそうと分かったので簡単に作ってみました。
GASで受付可否を切り替える
Googleフォーム編集画面の右上のメニューを開くと「スクリプト エディタ」というものがあるのでそれをクリック。
そしたらコード編集画面が出てくるので、下記のように記述。
//フォームのURLを入力
var URL = "Googleフォームの質問タブのURL(~/editで終わるURL)"; // ""や;は消さない
var Form = FormApp.openByUrl(URL);
var LimitNum = 5; // 回答の上限(この数に達したら受付終了)
function entryLimited(){
if(Form.getResponses().length >= LimitNum){
close();
}
}
//フォームを受付開始にする関数
function open(){
Form.setAcceptingResponses(true);
}
//フォームを受付終了にする関数
function close(){
Form.setAcceptingResponses(false);
}
ソースコードを記述したら「▶実行」の左にあるフロッピーディスクのマークを押下して保存。
左側の「トリガー」を選択する。
右下の「トリガーを追加」をクリックし、
- 実行する関数
- イベントのソースを選択
- イベントの種類を選択
を入力していく。
指定時刻になったら受付開始にする設定
- 実行する関数
- open
- イベントのソースを選択
- 時間主導型
- 時間ベースのトリガーのタイプを選択
- 特定の日時 で日時を入力
回答数が一定数に達したら受付終了にする設定
- 実行する関数
- entryLimited
- イベントのソースを選択
- フォーム
- 時間ベースのトリガーのタイプを選択
- フォーム送信時
こんな感じでかけばなんとなく動きそうです。
ということで2025年2月15日に開催する「浜松スポーツジャグリング杯」で使うフォームで使ってみました。
これで自動で受付終了してくれるはずです。
トリガーによっては指定時間で受付終了なども可能なので、もし同じように悩んでいた方の参考になればと思います。