みなさんこんにちは!GASおじさんです。
今回はGoogle Apps Script(GAS)を使って、Googleフォームの応募が定員に達した際に自動的に応募を締め切る方法を紹介します。
Youtubeでも解説してますので動画で見たい人は以下からどうぞ!
Googleフォームの回答受付停止機能
Googleフォームには回答の受付を停止する機能があります。
「回答」タブを開くと右側に「回答を受付中」というボタンがあります。

これをOFFにすると回答の受付を停止できます。

このとき受付停止後に表示するメッセージもカスタマイズすることができます。
この状態でプレビュー画面を開くと、以下のように受付停止のメッセージが表示され、フォームに回答することができなくなります。

この機能を活用して、回答数が定員に達したら自動的に受付停止されるようなGASを実装していきましょう!
定員に到達したら応募を締め切るGASを設定する
スクリプトエディタを起動
まずは右上の「︙」からメニューを開き、スクリプトエディタを起動します。

スクリプトを実装
以下のコードをエディタにコピペしてください。
function closeForm() {
const form = FormApp.getActiveForm();
const responses = form.getResponses();
if(responses.length >= 3){
form.setAcceptingResponses(false);
form.setCustomClosedFormMessage('定員に到達したため応募は締め切りました');
}
}
- FormApp.getActiveForm(): 現在のGoogleフォームを取得します。
- getResponses(): フォームに対するすべての応募(回答)を取得します。
- responses.length: 回答数(応募者数)を取得します。
- 応募者数が定員(ここでは3名)に達した場合、setAcceptingResponses(false)でフォームの受付を停止します。
- setCustomClosedFormMessage()でフォームが締め切られた際に表示するカスタムメッセージを設定します。
定員数や締め切り後に表示するメッセージは必要に応じてカスタマイズしてください。
実装したら一度エディタから実行して権限付与しておきましょう。

「権限を確認」をクリック。

お使いのGmailアカウントを選択。

「許可」をクリック。

実行ログに「実行完了」となったら準備完了です。

トリガーを設定
上記スクリプトがフォーム送信と同時に実行されるようにトリガー設定しましょう。
左サイドメニューから「トリガー」をクリック。

右下の「トリガーを追加」をクリック。

以下の画面でトリガー設定します。

- エラー通知設定を「今すぐ通知を受け取る」
- イベントのソースを「フォームから」
- イベントの種類を「フォーム送信時」
に設定して保存します。
これでトリガー設定完了です!
検証
実際に動くか検証してみましょう。
定員に到達するまで何度か送信します。

サンプルの場合、3人まで受付可能なので、それまでは回答を記録します。

3回送信した後に再度フォームにアクセスすると、以下のように締め切りのメッセージが表示されました。

無事、実装できましたね!
応用編: 定刻になったら応募を締め切る
それでは応用編で、定刻になったら応募を締め切るスクリプトを実装してみましょう。
function closeForm() {
const form = FormApp.getActiveForm();
form.setAcceptingResponses(false);
form.setCustomClosedFormMessage('定刻となったため応募は締め切りました');
}
こちらのスクリプトをエディタに貼り付けたら、トリガー設定しましょう。

- イベントのソースを「時間主導型」
- 時間ベースのトリガーのタイプを「特定の日時」
- 日時を「YYYY-MM-DD HH:MM」形式で指定
これで指定した日時に自動的にフォームを締め切ることができます。
イベントやセミナーの申し込みなどはこの方法が使えそうですね!
まとめ
以上、Googleフォームで定員に到達したら応募を締め切る方法について解説しました。
Googleフォームでは、GASを活用することで、定員に達した際の自動的な応募締め切りが簡単に実現できます。イベントやセミナーの管理を効率化したい方は、ぜひこの方法を試してみてください。
コメント