おぴよの気まぐれ日記

おぴよの気まぐれ日記

岡山やプログラミング、ファッションのこと、子育てや人生、生き方についての備忘録。

Googleフォームで先着順=回答数を制限する!を10分で実現する

Googleフォームのアドオン「formLimiter」の画像
Googleフォームのアドオン「formLimiter」の画像

アンケートを行いたい時に便利なのが「Googleフォーム」。

簡単にアンケート機能が実現できるし、集計も簡単にできるので大変便利なのですが

先着10名様限定!

みたいな回答数に上限を持たせるような機能を実現させたい時があると思います。

今回は、その方法をたった10分で実現する方法を紹介します。

ざっくり手順

  1. Googleフォーム作成
  2. 画面右上の「:」をクリック
  3. 「アドオン」をクリック
  4. 「formLimiterをインストール
  5. 「formLimiter」の設定を行う

アドオン「formLimiter」の使い方

具体的な設定方法は以下の手順で行えばok!

アドオン「formLimiter」の設定画面の画像
アドオン「formLimiter」の設定画面の画像

  • Limit Type:number of form responses -> 回答数で制限を行う
  • when responses are greater than:入力した数で回答を締め切る
  • Message when submissions are closed:締め切られた後に表示する文言
  • Email from owner when submissions are closed:締め切ったタイミングでメールを送信するかどうか

回答数の制限以外にも

  • 締め切り期限 = 終了する日時の設定
  • スプレッドシートの値に応じた制御

など結構柔軟な対応が、これだけで実現可能です!

GASを使う

formLimiterを使えば簡単に出来るが、スクリプトを自分で書くことで同様なことが実現可能です。

function myFunction() {
  // 回答上限数
  LIMIT_COUNT = 10;

  // アクティブフォーム取得  
  form = FormApp.getActiveForm();
  // 回答数を取得
  responseCount = form.getResponses().length;
  
  // 回答数を上回ったらアンケートを回答できなくする
  if( responseCount >= LIMIT_COUNT ) {
    form.setAcceptingResponses(false);
  }
  
  // 回答数をログに出力する
  Logger.log("回答数: " + responseCount);
}

各コードでやっていることは以下です。

function hoge()

関数定義。これが実行されるプログラムの一つの塊になります。

form = FormApp.getActiveForm()

Googleフォームからスクリプトエディタを起動させてGASを作成するとアクティブなGoogleフォームという形で紐付き簡単に呼び出せる。

form.getResponses()

回答された全てのデータを取得する

form.getResponses().length

回答された全てのデータ件数を取得する

if ( responseCount >= LIMIT_COUNT)

if文は条件分岐をさせる。今回の場合は回答上限数を回答数が上回ったら{}で囲まれた中に処理が通る。

form.setAcceptingResponses(false)

アンケート受け付けを制御する。falseの場合は受付をストップさせる。

Logger.log(responseCount)

()の中にあるデータをログに出力する

まとめ

10分もあれば、先着10名様!機能をGoogleフォームで実現できたと思います。

アドオンも結構色々なものがあったので、便利そうですね。