Googleフォームに申込数を表示し、一定数以上の申し込みはキャンセル待ちとして表示する

コロナ以後、オンラインイベントが増え、さまざまなプラットフォームを利用したお申込み、またはイベント参加者の管理方法を試された方も多いのではないでしょうか。

支払いなどのシステムを利用しない単純な申込みであれば、Googleフォームを利用が簡単です。シンプルさゆえ、微妙なところに手が届かないこともあり、以前紹介した「上限に達したらフォームを締め切る」ようなものはプログラムを書いて対応する必要があります。

今回は「現在時点での申込数の表示」と「締め切り後はキャンセル待ちのウェイティングリスト」化するようなGoogleAppScript(GAS)を紹介します。

1. フォームを作成する

Googleドライブから「フォームを作成する」を選び、必要な項目を用意しましょう。
イベント申込みフォームなので、「お名前」「ご所属」「イベントを知ったきっかけ」などとしてみましょう。
右上の設定から「メールアドレスを収集する」も選んでおくと良いでしょう。
f:id:pnch:20211218124421j:plain

2. スクリプトを作成する

2-1. スクリプトを作成する

右上の「…(3点リーダー)」をクリックして、「スクリプトの作成」を開きましょう。
f:id:pnch:20211218124429j:plain

画面にある「Function …」をすべて消去し、以下のスクリプトをコピペします。

function endFormCheck() {
var LIMIT_COUNT = 5; //イベントの参加定員数
 
var form = FormApp.getActiveForm();
 
//フォームの回答行が参加定員数以上だったら、回答受付をキャンセル待ちとする
if (form.getResponses().length >= LIMIT_COUNT) {
//キャンセル待ち数は現在の回答数-参加定員数
var WaitingSeat = form.getResponses().length - LIMIT_COUNT;//フォームの説明文に【キャンセル待ちは〇席です】と表示する
var description = 'イベントの定員数上限に達しました。現在のキャンセル待ち数は'+ WaitingSeat + '席です。\n';
form.setDescription(description); 
}
//参加定員数未満だったら、フォームの説明文に残席数を表示する
else{
//残席数は最大収容人数-現在の回答数
var application = LIMIT_COUNT -form.getResponses().length;//フォームの説明文に【残り〇席です】と表示する
var description = 'イベントの申込受付は残り'+ application + '席です。\n';
form.setDescription(description); 
}
}

左上にあるスクリプトの名称を「formandwating」など適当につけて保存しておきます。

2-2. スクリプトの発動条件を指定する

左のメニューバーより「時計のアイコン」をクリックして、画面右下「トリガーの追加」をクリックし、イベントの種類を選択から「フォームの送信時」としましょう。
f:id:pnch:20211218124635j:plain

Googleドライブへのアクセス許可が求められるので、「許可」をクリックしましょう。

これでフォームの申し込みが発生するたびに、申し込み数が上限に達していないか確認し、その差を残席またはキャンセル待ち数として表示することができます。

ちょっとした配慮ですが申込者の安心につながるかもしれませんね。


なお、サンプルを試した後に残席数の表示の数を直したい時は、フォームのデータを消去し、説明欄のテキストを上限数になるよう、手動で戻しましょう。

参考