前提・実現したいこと
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー