スプレッドシートに書かれた項目をGoogle Formの問題として流し込みたいのですが,なぜか「from.addListItem()」を繰り返すたびに項目が減ってしまいます.
コード内の「 generateArray(values, column)」部分の記述が悪いことは想像できるんですが,具体的にどのように修正すればいいかご教授頂けないでしょうか.
GAS
1//Googleフォームへの書き出し 2function createEventForm(){ 3 4 const ss = SpreadsheetApp.getActiveSpreadsheet() 5 const dataValues = ss.getSheetByName('DB').getDataRange().getValues(); 6 const values = ss.getSheetByName('DB').getDataRange().getValues(); 7 const values2 = ss.getSheetByName('問題選定').getDataRange().getValues(); 8 const formTitle = values2[0][1]; //タイトル 9 const form = FormApp.create(formTitle); 10 const formFile = DriveApp.getFileById(form.getId()); 11 DriveApp.getFolderById('').addFile(formFile); 12 DriveApp.getRootFolder().removeFile(formFile); 13 //氏名欄の追加 14 15 form.addListItem() 16 .setTitle('学年を入力してください') 17 .setChoiceValues(generateArray(dataValues, 15)) 18 .setRequired(true); 19 20 form.addListItem() 21 .setTitle('クラスを入力してください') 22 .setChoiceValues(generateArray(dataValues, 16)) 23 .setRequired(true); 24 25 form.addListItem() 26 .setTitle('出席番号を入力してください') 27 .setChoiceValues(generateArray(dataValues, 17)) 28 .setRequired(true); 29 30 31 form.addTextItem().setTitle('氏名を入力してください').setRequired(true); 32 33 //セクション変更 34 form.addPageBreakItem().setTitle('問題'); 35 36 37 const q1 = ss.getSheetByName('問題選定').getRange('A3').getValue(); 38 const q2 = ss.getSheetByName('問題選定').getRange('A4').getValue(); 39 const q3 = ss.getSheetByName('問題選定').getRange('A5').getValue(); 40 const q4 = ss.getSheetByName('問題選定').getRange('A6').getValue(); 41 const q5 = ss.getSheetByName('問題選定').getRange('A7').getValue(); 42 const q6 = ss.getSheetByName('問題選定').getRange('A8').getValue(); 43 const q7 = ss.getSheetByName('問題選定').getRange('A9').getValue(); 44 const q8 = ss.getSheetByName('問題選定').getRange('A10').getValue(); 45 const q9 = ss.getSheetByName('問題選定').getRange('A11').getValue(); 46 const q10 = ss.getSheetByName('問題選定').getRange('A12').getValue(); 47 const q11 = ss.getSheetByName('問題選定').getRange('A13').getValue(); 48 const q12 = ss.getSheetByName('問題選定').getRange('A14').getValue(); 49 const q13 = ss.getSheetByName('問題選定').getRange('A15').getValue(); 50 const q14 = ss.getSheetByName('問題選定').getRange('A16').getValue(); 51 const q15 = ss.getSheetByName('問題選定').getRange('A17').getValue(); 52 53 54 //問題の追加 55 var i =1 56 for(i=1;i<16;i++){ 57 form.addMultipleChoiceItem() 58 .setTitle(eval('q'+i) +'の意味を答えなさい') 59 .setChoiceValues(generateArray(values2, 2)) 60 } 61 62 63 function msgbox() { 64 //メッセージをmsgへ格納 65 var msg = "問題作成ができました!指定のドライブに戻ってください" 66 //メッセージボックスを表示 67 Browser.msgBox(msg); 68 } 69 msgbox(); 70 71 72 73} 74 75 function generateArray(values, column){ 76 77 values.shift(); 78 return values.map(record => record[column]).filter(value => value); 79 80 } 81 82
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。