前提・実現したいこと
Google formで特定の回数投票されたら、選択肢が自動で消去されるようにしたいです。
該当のソースコード
Google Apps Script
1 2function endFormCheck(){ 3 var spreadsheet = SpreadsheetApp.openById('id'); 4 var form = FormApp.openById('id'); 5 var dataValues = spreadsheet.getSheetByName('項目データ').getDataRange().getValues(); 6 var workdateValues = generateArray(dataValues, 2); 7 var LIMIT_COUNT =3; //ここで上限を設定 8 var ANSWER_LENGTH = 30; //時間帯の数 9 var answerCount = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];//カウント用:時間帯の数分配列を準備します 10 var itemID = 0; 11 var formResponses = form.getResponses(); // 全回答内容を取得 12 13for (var i = 0; i < formResponses.length; i++) { 14 var formResponse = formResponses[i]; // 回答ひとつ分を取得 15 var itemResponses = formResponse.getItemResponses(); // 質問項目を取得 16 17 for (var j = 0; j < itemResponses.length; j++) { // 回答内容をひとつずつチェック 18 var itemResponse = itemResponses[j]; 19 var question = itemResponse.getItem().getTitle(); 20 var answer = itemResponse.getResponse(); 21 if(question == '勤務予定時間帯'){ // 申込み数カウント 22 for (var k = 0; k < ANSWER_LENGTH ; k++){ 23 if(answer == workdateValues [k]){answerCount[k]++;} 24 } 25 } 26 } 27 28 // LIMIT_COUNTになっている選択肢があるかチェック 29 var answerCheck = 0; 30 var choiceArray = []; 31 var arrayCount = 0; 32 for(var i = 0; i < ANSWER_LENGTH; i++){ 33 if(answerCount[i] == LIMIT_COUNT){ 34 answerCheck++; 35 } 36 else{ // LIMIT_COUNTになっていない選択肢は残す 37 choiceArray[arrayCount] = workdateValues [i]; arrayCount++; } 38 39 } 40 41 42 43 // LIMIT_COUNTになっていない選択肢を「勤務予定時間帯」の選択肢に設定する 44 if( (answerCheck != ANSWER_LENGTH) && (answerCheck >= 1)){ 45 var items = form.getItems(); 46 for (var i= 0; i< items.length; i++ ){ 47 var item = items[i]; 48 if( item.getTitle() == '勤務予定時間帯' ){ 49 var choice = item.asMultipleChoiceItem().getChoices(); 50 item.asMultipleChoiceItem().setChoiceValues(choiceArray); 51 } 52 } 53 } 54} 55function generateArray(values, column){ 56 var i = 1; 57 var array = []; 58 for(var i = 1; i < values.length; i++){ 59 if(values[i][column]){ 60 array.push(values[i][column]); 61 } 62 } 63 return array; 64} 65} 66 67workdateValues = generateArray(dataValues, 2)の1次元配列 68選択肢 699日午前(10時~13時) 709日昼(13時~15時) 719日昼過ぎ(15時~17時) 729日夕方(17時~19時) 739日夜(19時~22時) 7410日午前(10時~13時) 7510日昼(13時~15時) 7610日昼過ぎ(15時~17時) 7710日夕方(17時~19時) 7810日夜(19時~22時) 79 80 81```選択肢を自動追加するコード 82function createEventForm(){ 83var spreadsheet = SpreadsheetApp.openById('ID'); 84 var form = FormApp.openById('id'); 85 var dataValues = spreadsheet.getSheetByName('項目データ').getDataRange().getValues(); 86 var workdateValues = generateArray(dataValues, 2); 87 88var listItem =form.getItems();//既存の全LISTを取得 89 90 for (var i = 0; i< listItem.length; i++){ 91 if (listItem[i].getTitle()=='勤務予定時間帯'){//タイトルが一致するLISTを選択 92 var qui = listItem[i].asMultipleChoiceItem()//変数quiにobjectを格納 93 break; 94 } 95 } 96 97 if (i == listItem.length){//forloopが完走してしまった場合 98 Logger.log("指定したタイトルのMultipleChoiceItemが存在しない") 99 return 100 } 101 102 var choices = [] 103 104 for (var j = 0; j < workdateValues .length; j++){ 105 choices.push(qui.createChoice( workdateValues [j])); 106 } 107 qui.setChoices(choices) 108 109 110 111 112 113function generateArray(values, column){ 114 var i = 1; 115 var array = []; 116 for(var i = 1; i < values.length; i++){ 117 if(values[i][column]){ 118 array.push(values[i][column]); 119 } 120 } 121 return array; 122}
### 試したこと 試しに投票して動作確認しましたが、選択肢は消えません でした。 ### 補足情報(FW/ツールのバージョンなど) https://yukaobu.wordpress.com/2016/10/23/googleform-2/ を参考にしました
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。