【发布时间】:2021-06-17 14:11:46
【问题描述】:
我正在尝试使用工作表列标记 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;,执行将永远不会停止。
我尝试过应用其他类型的循环,这可能是因为我不太精通循环,但这是迄今为止我能做到的最接近的。
那么有解决办法吗?
【问题讨论】:
-
我在我这边试了试。我删除了多余的
}并将Logger.log(value[i]+" "+value2[i]);包含在while-loop中。日志中显示的所有行 -
@RonM 是的。我根本没有注意到 T^T 。我已将其删除,并且效果很好。谢谢!
标签: google-apps-script google-sheets gmail label