PR

【GAS】Googleフォームの選択肢に定員を設定~チェックボックスでも対応

Google Workspace

定員(人数制限)に達した選択肢の項目を消す定員までの残席数を表示するチェックボックスによる複数選択に対応したフォームです。
前の記事で作成したGAS(updateItems)とスプレッドシートの関数を組み合わせて実現しました。

次の記事からの続きです。GASで組んだ関数updateItemsを今回も使います。

スポンサーリンク

応用例その5

〇〇セミナー申込フォーム

このフォームの特徴は、チェックボックスを使って、各セミナーを一人で複数選択できることです。

また、このフォームの申込みには定員があります。定員に達した選択肢の項目は、表示が消えて選べなくなります

また、定員までの残りの席数を表示します

質問、選択肢、説明

GASの登録

次の記事に従ってGAS(updateItems)をこのフォームに登録してください。

updateItems

スプレッドシートの関数

次に、リンクしたスプレッドシートに2枚目のシートを用意しました。
このシートの内容がGAS(updateItems)で使用されます

フォームの質問
フォームの選択肢
フォームの説明このB列をフォームの説明に表示します。
参照セルこのC列の値がゼロ"0"以下になると、フォームの選択肢から消えます。(このシートのA列は消えません。)

このシートを数式を表示([Ctrl]+@)してみます。

テーブル(コピペ用)で表示します。

希望時間希望の時間を選んでください(複数参加可)残席数申込者数定員数
10:00~10:30 第1部=IF(C2>0,"第1部の残り:"&C2,"第1部は満席")=E2-D2=COUNTIF('フォームの回答'!B:B,"*"&A2&"*")5
13:00~13:30 第2部=IF(C3>0,"第2部の残り:"&C3,"第2部は満席")=E3-D3=COUNTIF('フォームの回答'!B:B,"*"&A3&"*")5
15:00~15:30 第3部=IF(C4>0,"第3部の残り:"&C4,"第3部は満席")=E4-D4=COUNTIF('フォームの回答'!B:B,"*"&A4&"*")5
シート1

表計算に詳しい人は、問題ない簡単な関数です。

今回のポイントは、チェックボックスの複数選択により1つのセルに複数の回答があることです。

それをCOUNTIFの検索条件にワイルドカードを使うことで解決しています

実は、チェックボックスとスプレッドシートの関数との相性はいい

実は、これまでチェックボックスの選択肢に制限を与えるのは、現実的ではないと思っていました。

なぜなら、複数選択が可能だからです。

チェックボックスでは、1つの質問に対して複数の回答でも一つのセルに記録されます。

これをGASで扱うのが非常に面倒でしたので、どうやら私は意識的にチェックボックスを除外していたようです。

前々回のフォーム(応用編3)を作成して、GASで対処するのではなくスプレッドシートの関数でワイルドカードを使えば、簡単に解決することに気付きました。

さっそく今まで使用していたGAS(updateItems)を修正してテストした結果、問題ないのでupdateItemsチェックボックス対応とさせていただきました。

実行(回答)

実行(プレビュー)します。時短のため定員数は、セミナーの各部とも5名にしてあります。

↓ ↓ 1件を送信しました。 ↓ ↓

一つのセルに2つの回答があります。

結果

回答を繰り返しました。回答シートとフォームのプレビューです。

フォームの回答
シート1

残数がゼロになった選択肢が消えました
満席と残席数も表示されています

全ての選択肢の項目が定員に達すると、自動で回答の受付けが終了します

おわりに

いかがでしょうか。

今回でチェックボックスの複数選択にも、定員の制限を付けることができました。^o^

Googleフォームをより幅広く使うためにGASの勉強していたはずですが、いつの間にかスプレッドシートの関数の勉強(復習?)へ戻っていました。
会社でエクセルの表計算していた時を思い出して楽しんでますけどね。

それではまた、

コメント

  1. 全くの素人でしたが、大変助かりました。
    色々と素人なりに躓きもしましたが、無事動く申込フォームを作ることができました。
    感謝を伝えたくて、書き込ませていただきました。

    • こちらこそ、ありがとうございます。
      私は誰を尊敬するかというと素人にも関わらず私の難解なアイデアを理解しようとしてくれる人です。
      あなたの努力に脱帽です。

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