フォームで、「先着何人」というフォームを作りたい場面で使えるプログラムを作りました。定員付きのフォームの作り方は他のサイトでも紹介されていますが、私が作ったものは、フォームの説明欄に残り人数を表示できる枠が残り少なくなったときにだけ、フォームの説明欄に残り人数を表示するようにできるITに詳しくない人でも保守・管理が簡単→共同編集に便利といった特徴があり、非常に便利なものになっています。フォームは、既存のものでも、新規のものでも構いません。この記事では、適当に作ったこのフォームを使って説明していきます。いくつか設定して欲しい箇所があります。フォーム終了後のメッセージ「別の回答を送信するためのリンクを表示」をオフ、もしくは「回答を1回に制限する」をオンまず、上のバーより「回答」をクリックしてください。次に、「回答を受付中」の右のスイッチをクリックし、「回答を受け付けていません」の状態にしてください。「回答者へのメッセージ」と書いてある下のテキストボックスに、任意のメッセージを入力してください。これは、定員に達してフォームの受付が終了した際に、ユーザーに表示されるものです(下の画像を参照)。回答者へのメッセージを入力し終えたら、必要に応じて「回答を受け付けていません」の右のスイッチをクリックして「回答を受付中」に戻してください。それでは、2番の設定を始めます。上のバーから「設定」をクリックしてください。その後、「別の回答を送信するためのリンクを表示」をオフ、もしくは「回答を1回に制限する」をオンにします。アカウントを所持している必要があります。利用している場合などに最適です。アカウントへのログインが必要ありません。以下の手順に従って、どちらか一方、もしくは両方の設定を行ってください。ように操作してください。ように操作してください。これら以外の設定は、ご自由にどうぞ。プログラムを記述するまず、右上の縦に3つ並んでいるドットをクリックし、「スクリプトエディタ」をクリックしてください。※「現在、ファイルを開くことができません。アカウントだけログインし直してみてください。部分)をすべて消してください。その後、以下のコードをすべてコピペしてください。`定員${LIMIT_COUNT}名のところ、これまでに${form.getResponses().length}名が申し込みました。\n残りは${displayRemaining}枠です。FormApp.getUi().alert(`回答を締め切りました。`回答の収集を再開しますか?\n現在の定員は${LIMIT_COUNT}人、残りは${remaining}枠です。`半角数字で定員を入力してください。form.getResponses().length}枠です。'0以上の数を半角で入力してください。'半角数字で入力してください。`残りの枠数がいくつ以下になったら、回答者数・残りの枠数をフォームの概要文に表示するかを半角数字で入力してください。\n例)定員が100人で、残り5枠以下になったら残りの枠数をフォームの概要文に表示したい場合→「5」と入力する\n\nまた、残りの枠数が定員の○%以下になったら、というように設定することもできます。\n例)残りの枠数が定員の20%以下になったら残りの枠数をフォームの概要文に表示したい場合→「20%」と入力する\n\n概要文に常に残りの枠数を表示したい場合は、「-1」と入力してください。\n概要文に残りの枠数を表示させない場合は、「0」と入力してください。Math.floor(Number(propaty_display_limit))}」です。form.getResponses().length}枠です。"数字または割合(%)を半角で正確に入力してください。}}ついでにプロジェクトの名前も変えておきましょう。左上の「無題のプロジェクト」と書いてある部分をクリックすると表示されるポップアップに、好きな名前を入力してください。ここまで書いたら、保存してください。「実行」や「デバッグ」などが並んでいる列のフロッピーディスクのアイコンが保存ボタンです。プログラミングを勉強されている方のために、少し解説します。Scriptというものです。色々なサービスを(ときには外部サービスとも)連携させることができます。このコードでは、フォームの回答数によって、残りの枠数を表示させたり、回答の収集を停止したりしています。どのコードがどのような動作をしているかはコメントに書いておいたので、是非参考にしてみてください。トリガーをセットするトリガーは、「動作を予約する」時に使う機能です。上記のコードでは、フォームに新たな回答が来ても何も処理が行われないので、フォームに回答が届いたら、定員に達していないかの確認処理・概要文の更新処理を行うようにします。左側のメニューから、「トリガー」をクリックしてください。(カーソルを乗せるとメニューが広がります。)画面が変わったら、右下の「トリガーを追加」をクリックしてください。このとき、画面左下にこのようなポップアップが表示されたら、先程書いたプログラムが保存されていないということなので、青字の「保存」をクリックしてプログラムを保存してください。実行するデプロイ→「Head」イベントのソース→「フォームから」イベントの種類→「フォーム送信時」を選んで、右下の「保存」をクリックしてください。アカウントのログイン画面が表示されます。自分のアカウントをクリックしてください。この画面が表示されたら、「許可」をクリックしてください。「このアプリは確認されていません」との警告が出る場合がありますが、これは普通のことです。開発者登録をしているからかも)、もしそのような警告が出た場合は、下のサイトの手順通りに対処してください。※私のコードが信用できないという方は、「安全なページに戻る」をクリックしても構いません。使ってみるここまで終えたら、フォームの編集画面を再読込してください。すると、右上にパズルのピースのアイコンが表示されたと思います。「定員付きフォーム」に関する設定は、パズルのアイコン>「定員制御」からすべて行えます。設定画面はこんな感じです。最初にやることまず最初に、「定員を変更」をクリックしてください。表示されたポップアップに、設定したい定員を半角数字で入力し、「OK」をクリックしてください。次に、概要文に残りの枠数を表示させるかどうかの設定をします。先程の設定画面から、「残りの枠数を表示するしきい値を変更」をクリックしてください。このプログラムでは、フォームの概要文に「あと何枠です」というように表示させることができます。枠が埋まっていないことが分かると、申し込む気がなくなってしまう人もいます。(特に日本人はその傾向が強いと言われています。)そこで、枠が残り少なくなったら、「あと何枠です」という表示を開始するように設定できます。ここでは、「数」か「割合」で設定できます。これは単純で、「空きが何枠以下になったら、概要文への表示を開始する」ということです。空きが10枠以下になったら概要文に「残り○枠です」と表示させたい場合は、ポップアップに「10」と入力してください。「空き枠が定員の何%以下になったら、概要分への表示を開始する」ということです。定員が50人のフォームで、空きが定員の10%の5人以下になった場合に「残り○枠です」と概要文に表示させたい場合は、ポップアップに「10%」と入力してください。最後に、特殊な場合です。常に残りの枠数を表示させたい場合は「-1」を、申込数に問わず残りの枠数を表示させたくない場合は「0」を入力してください。入力し終えたら、「OK」をクリックしてください。「むむ?」という警告が表示された場合は、その数字またはパーセンテージが有効ではないため、「半角で」入力し直してください。設定を変更する一度設定した内容を変更したい場合も、上記と同じ手順で行えます。まとめいかがでしたか?久しぶりのGASだったので、色々調べながらの開発でしたが、楽しかったです。ここで紹介したコードはGitHubで公開しています。〜コンテキストメニューを作る〜1回15分でサクッと開発。今回は、拡張機能をコンテキストメニューからも起動できるようにします。〜権限多すぎ問題を解決〜1回15分でサクッと開発。今回は「権限多すぎ問題」を解決していきます。〜コピー機能の実装〜1回30分でサクッと開発。〜形にする〜1回15分でサクッと開発。〜ポップアップの作成〜1回15分でサクッと開発。今回はポップアップの作成。