PR

【GAS】Googleフォームの選択肢に定員を設定~複数人の申込みに対応

Google Workspace

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

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

スポンサーリンク

応用例その4

〇〇講演会申込フォーム

講演会などの申込みは、ペアチケットのように1回の申込みで2枚、3枚と複数枚の予約ができた方がいいようです。

このフォームでは、各講演会で1~3人申し込めるように選択肢の項目を増やしてあります。選択肢が多いのでプルダウンを選びました。

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

質問、選択肢、説明

GASの登録

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

updateItems

スプレッドシートの関数

次に、リンクしたスプレッドシートに2枚目のシートを用意しました。

このシートの内容がGAS(updateItems)で使用されます

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

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

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

申込日/申込人数ご希望の公演日と申込人数(1~3名)をお選び下さい。申込可能数残席数申込数来場者数定員数
7月2日/1名=IF(D2>0,"7月2日:残り"&D2&"座席","7月2日は満席になりました。")=INT($D$2/1)=G2-F2=COUNTIF('フォームの回答'!B:B,A2)=E2+E3*2+E4*350
7月2日/2名=INT($D$2/2)=COUNTIF('フォームの回答'!B:B,A3)
7月2日/3名=INT($D$2/3)=COUNTIF('フォームの回答'!B:B,A4)
7月9日/1名=IF(D5>0,"7月9日:残り"&D5&"座席","7月9日は満席になりました。")=INT($D$5/1)=G5-F5=COUNTIF('フォームの回答'!B:B,A5)=E5+E6*2+E7*350
7月9日/2名=INT($D$5/2)=COUNTIF('フォームの回答'!B:B,A6)
7月9日/3名=INT($D$5/3)=COUNTIF('フォームの回答'!B:B,A7)
7月16日/1名=IF(D8>0,"7月16日:残り"&D8&"座席","7月16日は満席になりました。")=INT($D$8/1)=G8-F8=COUNTIF('フォームの回答'!B:B,A8)=E8+E9*2+E10*350
7月16日/2名=INT($D$8/2)=COUNTIF('フォームの回答'!B:B,A9)
7月16日/3名=INT($D$8/3)=COUNTIF('フォームの回答'!B:B,A10)
sheet1

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

今回のポイントは、残席数を申込人数(1~3)で割って整数値をとることで、残席数が申込人数より小さいときはゼロとなることです。

ゼロとなった選択肢の項目から消えていくので、自然と3枚→2枚→1枚申込と消えていきます

実行(回答)

実行(プレビュー)します。時短のため定員数は、各講演会とも5名にしました。

プルダウンを開く

結果

回答を繰り返しました。シートの結果です。

プレビューです。

申込可能数がゼロになった選択肢の項目が消えました残席数も表示されています

プルダウンを開く

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

おわりに

いかがでしょうか。

今回のフォームとスプレッドシートの関数は少し力業過ぎたかなと思いました。
実用性はあるのかな?

それではまた、

コメント

  1. Kasuga Kasuga より:

    当ブログのスクリプトをお試しいただき、誠にありがとうございます。

    全ての応用例の基礎となるupdateItems関数の紹介と使い方は、こちらの記事で詳しく解説しております。
    https://terihat.com/gas-updateitems/
    まずはこの記事をお読みいただき、フォームとシートの連携、シート1の作成、そしてGASのトリガー設定を確実に理解した上で、応用例その1までを手順通りに進めてみてください。

    応用例その1を確実に成功させてから他の応用編に挑戦していただくと、もし問題が発生した場合でも、原因箇所を特定しやすくなります。まずは、応用例その1をお試しください。

    追記:
    現在、WiFiの繋がらない環境に滞在しており、しばらくの間PCでの動作テストができません。ご不便をおかけしますが、恐れ入りますがご自身でテストをお試しいただけますよう、お願い申し上げます。

  2. こあら より:

    やりたいと思っていたことを細かに紹介していただき、大変ありがたく思っております。

    教えていただいた通り作成し、回答してみても、定員に達した選択肢が消えず、残席数もフォームに反映されません。スプレッドシートのB列以降が反映されていないのかなと思うのですが…。また、申込数などはスプレッドシート上にも反映されておらず、原因がわかりません。スプレッドシートに関数は正しく打ち込んだことを確認しておりますが、どうすれば良いのでしょうか?

    説明が下手で大変申し訳ないのですが、お力を貸していただけますと幸いです。

  3. Kasuga Kasuga より:

    もちろん、質問の並びはご自由にできます。
    うまくいかないとのお話ですが、ひょっとして私のサンプルをそのまま使おうとされているのでしょうか?
    もちろん、自由な並びで問題ないですが、それに合わせてセルの関数も設定されていますか?
    例えば、回答シートのC列の質問がD列に移動したのなら、シート1の関数でC列に関係するものがあれば、D列への変更が必要です。
    もう一度、回答シートとシート1の関係が正しく反映しているか確認してみてください。

  4. さまよえるアラフィフ婦人 より:

    いつも参考にさせていただき、大変お世話になっております。
    以前ご相談させていただいた、こども食堂の申込フォームに自動返信メールを追加するに際して、もともとのフォームも改良できないものかと思い、ご相談させていただきます。
    現在作成しているフォームは題名に続いて、申込人数(説明欄で残申込み人数を表示するように設定)(プルダウン)、申込代表者氏名、申込者の内訳(ラジオボタン)、電話番号、メールアドレス、となっております。
    それを、申込代表者氏名、申込人数、申込者の内訳、電話番号、メールアドレスと並び変えたいのですが、うまくいきません。
    この順番というのは変更可能なのでしょうか?
    お知恵をお貸しください。

  5. Kasuga Kasuga より:

    kurain様、当ブログをご覧いただきありがとうございます。
    設定シートの定員数を増やして、フォームのスクリプトエディタからupdateItemsを実行すると即時、変更がフォームに反映されます。
    このやり方はフォームからの送信を使用せず、回答数などに影響がないので、覚えておくといいかもしれませんね。

  6. kurain より:

    Googleフォームで困っていた方がいて使用させていただきました。
    細かく書いていてとても助かるサイト運営ありがとうございます!

    お聞きしたいことがありコメントいれさせていただきます。
    人数が変更やキャンセルがあった場合の人数調整とまた満員になった後にまた増やして募集したい場合はどうしたらいいでしょうか?
    アドバイスいただければ助かります。

  7. Kasuga Kasuga より:

    お役に立てたようで何よりです。
    フォームの回答を削除する必要があることも、掲載しておいた方が良さそうですね。
    とても参考になりました。ありがとうございます。

    有料サイトは高額ですよね。コストをかけられない方々のために作成しましたので、そう言っていただけて本当に良かったです。
    これからも森林や林業の普及啓発活動を応援しています。

  8. まゆぞう より:

    さっそくのお返事をいただき、ありがとうございます。
    回答タブの削除をしたら残席数が反映されました!

    森林・林業の普及啓発のため、小さな任意団体が主催するイベントで参加申し込みの手間を何とか減らしたいけれど、有料のサイトを使う予算がないと悩んでいたので、本当に助かりました。
    ありがとうございました。

  9. Kasuga Kasuga より:

    当ブログをご覧いただきありがとうございます。

    シートに表示されているのに、フォームに反映されないのはC列が正しく記されていないことが多いです。
    次に時間帯4種と人数4人に対応のパターンを載せましたので参考にしてください。

    ※”フォームの回答”シートの回答行を全て削除したときは、必ずフォームの回答タブの”すべての回答を削除”をお忘れずに!

    これでもうまく行かないようでしたらお知らせください。

  10. まゆぞう より:

    はじめまして。

    とても便利なワザを公開してくださり、ありがとうございます。
    イベントでのワークショップの申込のために、時間ごとに定員をつくり、複数人の申込を受け付ける方法を探していたので、ドンピシャでした。

    テストではうまくいったので、作りたい時間帯以下の4種類、人数は4人までの形に応用してみました。
    (時間帯10:00~10:50 11:00~11:50 13:00~13:50 14:00~14:50)
    シート1のB列の説明には正しい残席数や満席の表示が出ているのにフォームの説明のところには反映されず、満席になってもせ選択肢は消えません。

    お忙しいところ恐縮ですが、アドバイスをいただけると嬉しいです。
    よろしくお願いします。

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