如何解决循环遍历谷歌工作表中的列和行以标记 gmail - 谷歌应用程序脚本
我正在尝试使用工作表列标记 gmail 线程。代码本身很好,我已经使用单行进行了测试。例如,A2(MessageID 1)和 B2(标签 1),我让它成功地根据列标记了 gmail 线程。
但是,现在我正在为循环而苦苦挣扎。
这是脚本
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet2 = ss.getSheetByName("Sheet1")
var range=sheet2.getRange('A2:A');
var value =range.getValues();
var range2=sheet2.getRange('B2:B');
var value2 =range2.getValues();
var i = 0; //count
while ( value2[i][0] != "" && value2[i][0] != "#N/A" ) {
let label = GmailApp.getUserLabelByName(value2[i]);
if (!label) {label = GmailApp.createLabel(value2[i]);
console.log("Get threads");
var threads= GmailApp.getThreadById(value[i]);
console.log("Add label");
threads.addLabel(label);
i++;
}
return i;
}
}
这是列的图像
这是 testing sheet 的链接
代码执行问题:
- 如果包含
return i;
,则只处理第一行,不循环遍历其他行。 - 如果删除
return i;
,则执行永远不会停止。
我尝试应用其他类型的循环,这可能是因为我不太精通循环,但这是迄今为止我能得到的最接近的。
有什么办法可以解决这个问题吗?
解决方法
i++
位于 if
语句中 - 因此如果它正在处理的标签已经存在,它可能永远不会递增。
我假设您应该在 if()
中只有一个语句:
if (!label) {
label = GmailApp.createLabel(value2[i]);
}
然后您需要删除代码中较低的额外 }
。
另外,return 语句是多余的。
如果代码缩进正确,可能更容易看到发生了什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。