我正在谷歌應用程序腳本,似乎已經搞砸了我的for循環之一。我確信我在這裏錯過了一些微不足道的東西,但我似乎無法發現它。谷歌應用程序腳本 - 斷循環
代碼段:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var lastRow = sheets[3].getLastRow();
var zw = sheets[3].getRange(2, 1, lastRow - 1, 26).getValues();
for (var j = 0; j < zw.length; ++j) {
if (zw[j][9] === 'Yes') {
var masterEmail = [];
var firstLetterLastName = [];
var first2Letter = [];
var masterEmail.push(zw[j][22]);
var firstLetterLastName.push(zw[j][1].charAt(0).toLowerCase());
var first2Letter.push(zw[j][1].charAt(0).toLowerCase() + zw[j][1].charAt(1).toLowerCase());
//The rest of the function follows...
}
}
什麼不工作:
for循環不遞增。在調試器中運行代碼時,var j的值保持爲0.0,而函數的其餘部分僅基於zw的0位置的值運行。
我需要做的(AKA什麼 - 我是怎樣想我已經寫好了:)
的ZW變量保持單元格值的2維數組從谷歌片。我正在循環,檢查每個數組條目的第9個值是否爲「是」,然後在條件爲真時運行該函數的其餘部分(對於具有「是」的每列)。
我以爲我以前工作過,但最近不得不重新調整和優化一些東西。現在我開始認爲我可能需要重新思考並使用不同的循環方法。任何人都可以教育我嗎?
編輯:這是按要求多一點背景:我有連接到一個簡單的OnOpen菜單項,調用menuItem1
function menuItem1() {
var ui = SpreadsheetApp.getUi();
var response = ui.alert('Are you sure you want to send emails?', ui.ButtonSet.YES_NO);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var lastRow = sheets[3].getLastRow();
var zw = sheets[3].getRange(2, 1, lastRow - 1, 26).getValues();
if (response === ui.Button.YES) {
for (var j = 0; j < zw.length; j++) {
if (zw[j][9] === 'Yes') {
var firstLetterLastName = [];
firstLetterLastName.push(zw[j][1].charAt(0).toLowerCase());
//Other Stuff....
}
}
}
}
()。調用該函數會提示用戶發出要發送電子郵件的警告,然後根據表單內容獲取數據以分配電子郵件地址。 firstLetterLastName就是一個例子。
我還沒有得到循環的功能,是因爲我有它之間的兩個if語句? (Here是指向表單的鏈接)
你能展示電子表格數據的外觀嗎?因爲你寫的for循環似乎沒有什麼問題。 –
我添加了一個編輯,它提供了您要查找的數據嗎? – Jensen010
我製作了電子表格的副本,將代碼從'for'循環和'if'clauses中剝離出來,並且在運行邏輯時沒有任何問題。如果你沒有得到預期的結果,我會專注於'for'循環中的代碼。如果您想提供更多關於哪些錯誤的信息(如果有的話),您將獲得幫助我們解決問題的信息。 – Silinus