定員(人数制限)に達した選択肢の項目を消す、定員までの残席数を表示する、チェックボックスによる複数選択に対応したフォームです。
前の記事で作成したGAS(updateItems)とスプレッドシートの関数を組み合わせて実現しました。
次の記事からの続きです。GASで組んだ関数updateItemsを今回も使います。
応用例その5
〇〇セミナー申込フォーム
このフォームの特徴は、チェックボックスを使って、各セミナーを一人で複数選択できることです。
また、このフォームの申込みには定員があります。定員に達した選択肢の項目は、表示が消えて選べなくなります。
また、定員までの残りの席数を表示します。
①質問、②選択肢、③説明
GASの登録
次の記事に従ってGAS(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つのセルに複数の回答があることです。
それをCOUNTIFの検索条件にワイルドカード*を使うことで解決しています。
実は、チェックボックスとスプレッドシートの関数との相性はいい
実は、これまでチェックボックスの選択肢に制限を与えるのは、現実的ではないと思っていました。
なぜなら、複数選択が可能だからです。
チェックボックスでは、1つの質問に対して複数の回答でも一つのセルに記録されます。
これをGASで扱うのが非常に面倒でしたので、どうやら私は意識的にチェックボックスを除外していたようです。
前々回のフォーム(応用編3)を作成して、GASで対処するのではなくスプレッドシートの関数でワイルドカード*を使えば、簡単に解決することに気付きました。
さっそく今まで使用していたGAS(updateItems)を修正してテストした結果、問題ないのでupdateItemsをチェックボックス対応とさせていただきました。
実行(回答)
実行(プレビュー)します。時短のため定員数は、セミナーの各部とも5名にしてあります。
↓ ↓ 1件を送信しました。 ↓ ↓
一つのセルに2つの回答があります。
結果
回答を繰り返しました。回答シートとフォームのプレビューです。
残数がゼロになった選択肢が消えました。
満席と残席数も表示されています。
全ての選択肢の項目が定員に達すると、自動で回答の受付けが終了します。
おわりに
いかがでしょうか。
今回でチェックボックスの複数選択にも、定員の制限を付けることができました。^o^
Googleフォームをより幅広く使うためにGASの勉強していたはずですが、いつの間にかスプレッドシートの関数の勉強(復習?)へ戻っていました。
会社でエクセルの表計算していた時を思い出して楽しんでますけどね。
それではまた、
コメント
全くの素人でしたが、大変助かりました。
色々と素人なりに躓きもしましたが、無事動く申込フォームを作ることができました。
感謝を伝えたくて、書き込ませていただきました。
こちらこそ、ありがとうございます。
私は誰を尊敬するかというと素人にも関わらず私の難解なアイデアを理解しようとしてくれる人です。
あなたの努力に脱帽です。