質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

1525閲覧

Googleフォームにて定員になったら選択肢から除外したいです。

takikuri

総合スコア4

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

1グッド

0クリップ

投稿2020/02/05 02:54

前提・実現したいこと

Googleフォームで申し込みフォームを作成しており、各時間帯満員になったら選択肢から除外する
ということをしたいです。

発生している問題・エラーメッセージ

以下が表示され、プログラムが再生されません。

エラーメッセージ TypeError: undefined からプロパティ「0」を読み取れません。(行 59、ファイル「コード」)

該当のソースコード

var LIMIT_COUNT = 2; var ANS_WORD1 = '10:10~10:50'; var ANS_WORD2 = '11:20~12:00'; var ANS_WORD3 = '13:30~14:10'; var form = FormApp.getActiveForm(); function _getAnswerCount() { var cnt1 = 0; var cnt2 = 0; var cnt3 = 0; form.getResponses().forEach(function(resp){ var items = resp.getItemResponses(); items.forEach(function(item){ var answer = item.getResponse(); if (answer.indexOf(ANS_WORD1) != -1) { cnt1++; } else if (answer.indexOf(ANS_WORD2) != -1) { cnt2++; } else if (answer.indexOf(ANS_WORD3) != -1) { cnt3++; } }); }); var r = {ans1: cnt1, ans2: cnt2, ans3: cnt3}; return r; } function _modifyChoices(targetVal){ var TARGET_ITEM = '時間帯を選択してください。'; var CLOSE_TEXT = '※各回締め切りました'; form.getItems().forEach(function(item){ if (item.getTitle() == TARGET_ITEM) { var choices = []; item.asMultipleChoiceItem().getChoices().forEach(function(choice){ var choiceVal = choice.getValue(); if (choiceVal.indexOf(targetVal) != -1) { Logger.log('DELETED: ' + choiceVal); // 選択肢を消す(何もしない) } else { choices.push(choiceVal); // 選択肢を残す } }); // 選択肢が1つもない場合は全て締め切った旨を表示する if (choices.length < 1) { choices.push(CLOSE_TEXT); } //選択肢を再生成する item.asMultipleChoiceItem().setChoiceValues(choices); } }); } function _choiceBuilder(itemResponses) { var value = itemResponses[0].getResponse(); //1問目の回答 var r = _getAnswerCount(); if (value.indexOf(ANS_WORD1) != -1 && r.ans1 >= LIMIT_COUNT) { _modifyChoices(ANS_WORD1); } else if (value.indexOf(ANS_WORD2) != -1 && r.ans2 >= LIMIT_COUNT) { _modifyChoices(ANS_WORD2); }  else if (value.indexOf(ANS_WORD3) != -1 && r.ans3 >= LIMIT_COUNT) { _modifyChoices(ANS_WORD3); } function onFormSubmit(e) { _choiceBuilder(e.response.getItemResponses()); } // 選択肢が1つもない場合は全て締め切った旨を表示する if (choices.length < 1) { //choices.push(CLOSE_TEXT); form.setAcceptingResponses(false); } }

試したこと

エラーの出ている59行目「 var value = itemResponses[0].getResponse(); //1問目の回答」

0がエラーのようなので、数字を変更して見ました。
-1、1、2、3、0,1,2 など

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

Naoki.Y👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macaron_xxx

2020/02/05 03:52

フォームのトリガーを起動しているんですよね?
takikuri

2020/02/05 03:58

ご確認ありがとうございます! はい、そうです。
macaron_xxx

2020/02/07 06:44

トリガーの情報をスクショしてはっつけてもらっていいですか?
guest

回答1

0

自己解決

別方法でできました。

投稿2020/04/09 04:20

takikuri

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問