前提・実現したいこと
こちらの記事を参考に、
[Googleフォームで回答数により選択肢を変更する]
https://yukaobu.wordpress.com/2016/10/23/googleform-2/
Googleフォームで、上限付きの申込フォームを作っています。
こちらの方法だと、「質問」に対する「選択肢」を変更するたびに、GASも変更しなければいけません。
これを自動化したいです。
上記の例で言いますと、
フォーム内の「質問」、「参加する時間」に対するラジオボタンの選択肢「13時〜」、「14時〜」、「15時〜」を「14時〜」、「15時〜」、「16時〜」と変更した場合、GASも変更する必要があります。
該当のソースコード
思惑としては、フォームの「質問」に対する「選択肢」を取得して、申込内容を格納している「answer」と比較すれば良いのではないかと考えています。
ただ、googleフォームの「質問」に対するラジオボタンの「選択肢」を取得する方法が、いくら探してもわからず質問させていただきました。
アドバイスいただきたいです。
1function endFormCheck() { 2 var LIMIT_COUNT = 10; //ここで席数上限を設定 3 var ANSWER_LENGTH = 3; //時間帯の数 4 var answerCount = [0,0,0];//カウント用:時間帯の数分配列を準備します 5 var itemID = 0; 6 7 var form = FormApp.getActiveForm(); //アクティブフォームを取得 8 9 var formResponses = form.getResponses(); // 全回答内容を取得 10 11 for (var i = 0; i < formResponses.length; i++) { 12 var formResponse = formResponses[i]; // 回答ひとつ分を取得 13 var itemResponses = formResponse.getItemResponses(); // 質問項目を取得 14 15 for (var j = 0; j < itemResponses.length; j++) { // 回答内容をひとつずつチェック 16 var itemResponse = itemResponses[j]; 17 var question = itemResponse.getItem().getTitle(); 18 var answer = itemResponse.getResponse(); 19 if(question == '参加する時間'){ // 申込み数カウント 20 if(answer == '13時〜'){ answerCount[0]++; } 21 else if( answer == '14時〜'){ answerCount[1]++; } 22 else if( answer == '15時〜'){ answerCount[2]++; } 23 } 24 } 25 } 26 27 // LIMIT_COUNTになっている選択肢があるかチェック 28 var answerCheck = 0; 29 var choiceArray = []; 30 var arrayCount = 0; 31 for(var i = 0; i < ANSWER_LENGTH; i++){ 32 if(answerCount[i] == LIMIT_COUNT){ 33 answerCheck++; 34 } 35 else{ // LIMIT_COUNTになっていない選択肢は残す 36 if ( i == 0 ){ choiceArray[arrayCount] = '13時〜'; arrayCount++; } 37 else if( i== 1 ){choiceArray[arrayCount] = '14時〜'; arrayCount++;} 38 else if( i== 2 ){choiceArray[arrayCount] = '15時〜'; arrayCount++;} 39 } 40 } 41 42 // 全てLIMIT_COUNTなら申込みフォームを受付終了 43 if(answerCheck == ANSWER_LENGTH){ 44 form.setAcceptingResponses(false); 45 } 46 47 // LIMIT_COUNTになっていない選択肢を「参加する時間」の選択肢に設定する 48 if( (answerCheck != ANSWER_LENGTH) && (answerCheck >= 1)){ 49 var items = form.getItems(); 50 for (var i= 0; i< items.length; i++ ){ 51 var item = items[i]; 52 if( item.getTitle() == '参加する時間' ){ 53 var choice = item.asMultipleChoiceItem().getChoices(); 54 item.asMultipleChoiceItem().setChoiceValues(choiceArray); 55 } 56 } 57 } 58}
試したこと
ライブラリから「FormApp」で取得できそうで、上記ソースコードで使っているので、できそうなきがするのですが、具体的にどのように記述したら良いか、わかりませんでした。
https://developers.google.com/apps-script/reference/forms/form-app
ここに問題に対して試したことを記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/17 11:57
退会済みユーザー
2018/04/17 13:14