【GAS】Googleフォーム締切条件をスプレッドシート集計人数にする

- プログラミング -
2022.02.07
GAS/Google Apps Script

以下のようにスプレッドシートで"参加人数列"を集計しているGoogleフォームで、「ここの列を合計した数が100人を超えたらフォームを受付終了表示にしたい」

Googleフォーム締切条件をスプレッドシート集計人数に

・・・ということをGASで実現する方法です。

Google Apps Scriptを書けなくても問題ないよう、コピペで済ませられるように書いていきます。

注意:

本記事で記載するGASスクリプトは、上記画像F列のように「1〜9名」までの1桁台の人数が入ってくる想定で書いています。

10名以上の人数が1つのセル内に入ってくるような応募フォームになっている場合はそのままコピペしても動かない点、ご注意ください。

【GAS】Googleフォームをスプレッドシート集計人数で自動締切にする

以下、2ステップです。

  1. GASのスクリプトを作成(コピペ)
  2. GASのトリガーを設定

1. GASのスクリプトを作成(コピペ)

対象のGoogleフォームを開いたら、右上3点マーク → スクリプトエディタをクリックします。

Googleフォーム締切条件をスプレッドシート集計人数に

すると、このよう↓にスクリプト編集画面が開くので、

Googleフォーム締切条件をスプレッドシート集計人数に

以下コードをまるっとコピペしてください。

Google Apps Scriptfunction myFunction() {
  const ss = SpreadsheetApp.openByUrl('収集スプレッドシートのURL');
  const answerSheet = ss.getSheetByName('フォームの回答 1');
  let lastRow = answerSheet.getLastRow();
  // F列2行目から最終行までを配列で取得
  let applicantNumList = answerSheet.getRange(2, 6, lastRow-1).getValues().flat();
  // 配列の空白削除 & 頭文字を数値型で切り出し
  applicantNumList = applicantNumList.filter(v => v).map(v => Number(v[0]));
  // 応募者数合計
  let applicantSum = applicantNumList.reduce((sum, el) => sum + el, 0)

  console.log(`応募者合計:${applicantSum}`);

  // 送信ボタンを押したぶんを含め、100名が超えた瞬間にフォームを締め切る
  if (applicantSum >= 100) {
    closeFormAcceptance();
  }
}

function closeFormAcceptance() {
  var myForm = FormApp.openByUrl("GoogleフォームのURL");
  myForm.setAcceptingResponses(false);
}

あなたのスプレッドシートの状態によって、以下の通り修正をします。

2行目

収集スプレッドシートのURL部分を書き換えます。その名の通り、Googleフォームの回答を収集しているスプレッドシートのURLを全部コピぺしましょう。

3行目

フォームの回答 1部分を書き換えます。シートのシート名をそのままコピペしましょう。

Googleフォーム締切条件をスプレッドシート集計人数に

6行目

answerSheet.getRange(2, 6, lastRow-1)部分の「6」を修正します。

単純に、「人数カウントの列は左から何列目か」を数えて数字を代入すればOK。

A列=1列目、B列=2列目...というふうにです。

今回の例では「F列」に参加人数を集計しているので、「6」が入っています。

15行目

100部分を上限にしたい数値(人数)に修正します。

2. GASのトリガーを設定

つぎは、「応募者がGoogleフォームを送信した瞬間にGASが起動する」というトリガー設定をしていきます。

GASスクリプトエディタ画面の左メニューから「トリガー」→「トリガーを追加」をクリックします。

Googleフォーム締切条件をスプレッドシート集計人数に

  1. 「実行する関数を選択」でコピペ作成した関数名を選択(最初から選択済みのはず)
  2. 「イベントのソースを選択」で「フォームから」を選択
  3. 「イベントの種類を選択」で「フォーム送信時」を選択し、保存

Googleフォーム締切条件をスプレッドシート集計人数に

もし以下のような画面が表示されたら、アカウントを選択して許可をしていってください。

Googleフォーム締切条件をスプレッドシート集計人数に

トリガーが設定されたことを確認します。

Googleフォーム締切条件をスプレッドシート集計人数に

これでうまく動いていれば、応募上限人数に達した次の人から、応募フォームURLへアクセスすると自動的に応募締め切り画面が表示されて応募ができないようになっているはずです。

手動で集計スプレッドシートを編集するなどして、テスト応募を行なってみてください。

↑TOP