2013-06-20 47 views
1

我已經嘗試了以下代碼的多次迭代,但成功次數有限。記錄器似乎正確地顯示命令,但表單看起來不像EXECUTE命令。執行後,表單只會生成一個未定義的複選框。如何使用For循環創建Google窗體複選框選項

鑑於我必須多次重複使用稍微不同的問題措辭重複此複選框問題,我試圖減少我的代碼足跡,並希望變得更高效。

這裏是代碼段的我的影片失敗:

var storerangestart = 9901; 
    var storerangeend = 9999; 
    page402_cbitem1.setTitle('What stores do you have allocated for this project?'); 
    var page402array = 'page402_cbitem1.setChoices([\n'; 
    for (var i = storerangestart; i < storerangeend; i++) { 
     var storerangecurrent = i + ""; 
     page402array += 'page402_cbitem1.createChoice(' + storerangecurrent + '),\n'; 
    } 
    page402array += 'page402_cbitem1.createChoice(' + storerangeend + ')\n]);'; 
    Logger.log(page402array); 
    page402array(); 

回答

2

的記錄器沒有顯示你的命令,它顯示你的字符串。您的代碼創建了一個字符串,其中包含的文字看起來像代碼,但無法直接在Google Apps腳本中執行該字符串的內容。

你有一個好主意 - 你只是試圖處理錯誤的對象類型。

看看CheckboxItem.setChoices()的定義,你會發現它需要一系列選擇作爲參數。示例代碼可能會拋出你,因爲它創造了.setChoices()方法調用裏面的item元素:

item.setChoices([ 
    item.createChoice('Cats'), 
    item.createChoice('Dogs') 
]); 

你可以實現同樣的結果是這樣的:

var choices = [];       // create a new array of choices 
choices.push(item.createChoice('Cats')); // Add 'Cats' 
choices.push(item.createChoice('Dogs')); // Add 'Dogs' 
item.setChoices(choices);     // set the array of choices 

,設置了機會爲循環你在想什麼。而不是建立一個包含一串代碼,你需要調用各種對象的方法,首先建立的選擇數組,然後該數組分配作爲選擇的表單項目:

var storerangestart = 9901; 
var storerangeend = 9999; 
page402_cbitem1.setTitle('What stores do you have allocated for this project?'); 
var page402array = []; 
for (var i = storerangestart; i < storerangeend; i++) { 
    var storerangecurrent = i + ""; 
    page402array.push(page402_cbitem1.createChoice(storerangecurrent)); 
} 
Logger.log(page402array); 
page402_cbitem1.setChoices(page402array); 
+0

非常感謝你。這讓我瘋狂!我不是一個交易程序員,但可以混淆許多像'編程'這樣的任務......這個只是讓我陷入困境,因爲我第一次使用.setChoices方法創建複選框數組。 setChoice,它一直保持錯誤狀態,所以我認爲文檔可能已過時,這是一個不推薦的方法。 – user2494974

+0

很高興幫助!當你對所有代碼有足夠的熟悉時,代碼就變得容易了,但是很容易混淆來自PHP的想法,網頁上的javascript,服務器端編程以及Apps Script API。我認爲通過思考過程的工作可能有助於解決類似的未來問題。 – Mogsdad

+0

@Mogsdad,我剛花了幾個小時試圖弄清楚如何構建一系列的選擇。 'var choices = []; //創建一個新的選擇陣列 choices.push(item.createChoice('Cats')); //添加'貓' choices.push(item.createChoice('Dogs')); //添加'Dogs' item.setChoices(choices); //設置選擇陣列'保存一天。謝謝你,並且讚不絕口。 –

相關問題