【发布时间】:2017-01-26 20:19:50
【问题描述】:
我正在使用 Google 应用程序脚本,似乎搞砸了我的一个 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 变量包含来自 Google 工作表的单元格值的二维数组。我正在遍历它,检查每个数组条目的第 9 个值是否有字符串“是”,然后如果条件为真,则运行函数的其余部分(对于每个带有“是”的列)。
我以为我以前有这个工作,但最近不得不重组和优化一些东西。现在我开始认为我可能需要重新考虑事情并使用不同的循环方法。谁能教教我?
编辑:根据要求提供更多上下文:
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....
}
}
}
}
我有一个附加到一个简单的 onOpen 的菜单项,它调用 menuItem1()。调用该函数会提示用户他们将要发送电子邮件的警告,然后开始获取数据以根据工作表的内容分配电子邮件地址。 firstLetterLastName 就是一个例子。
我仍然没有让循环运行,是因为我在两个 if 语句之间有它吗? (Here 是工作表的链接)
【问题讨论】:
-
您能展示一下电子表格数据的样子吗?因为您编写的 for 循环似乎没有任何问题。
-
我添加了一个编辑,它是否提供了您正在寻找的数据?
-
我复制了您的电子表格,从您的
for循环和ifclauses 中删除了代码,运行您的逻辑没有问题。如果您没有得到预期的结果,我将专注于您的for循环中的代码。如果您能提供更多关于哪些错误(如果有的话)的信息,您将得到这将帮助我们解决您的问题。 -
我得到的错误是 [j] 保持在 0,而不是通过我需要它的数据递增 - zw[j][9]。这对应于列...U?在电子表格中,询问客户是否要发送电子邮件。 var zw 有所有预期的数据(一个数组的数组,每行的所有单元格内容,对于每个内部数组项)我试图循环通过它,确定每行的第 9 列中是否有一个是,然后基于此运行函数。但是,由于 [j] 保持为 0,它只会查看其中一行。本身不是“错误”,我只是做错了:)
-
我 copied your file 并开始查看您的代码。在我复制的文件中查看我对代码的编辑。
标签: javascript loops for-loop google-apps-script google-sheets