Jos*_*ley 5 javascript gmail google-apps-script
在工作中,我们有一个谷歌脚本代码,每 4 小时运行一次,并检查每个人的@文件夹中是否有未读邮件。如果发现未读邮件,则会将其移至“收件箱”并标记为@@UNREAD。
我需要的是一种方法让脚本检查它是否已经具有 @@UNREAD 标签,并且在这种情况下不会移动到收件箱。
这是代码
function process_unread() {
//Define user label
var label = GmailApp.getUserLabelByName("@Josh");
//Define unread label
var unreadlabel = GmailApp.getUserLabelByName("@@UNREAD");
if (label) {
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var thread = threads[i];
if (thread.isUnread()) {
//Remove label
thread.addLabel(unreadlabel);
thread.moveToInbox();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果电子邮件没有 @@UNREAD 标签,我如何才能仅移动它们?
这是我的尝试:
function process_unread() {
//Define user label
var label = GmailApp.getUserLabelByName("@Josh");
//Define unread label
var unreadlabel = GmailApp.getUserLabelByName("@@UNREAD");
if (label) {
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var thread = threads[i];
var labels = thread.getLabels();
var doesThisThreadHaveTheLabel = false;
for (var i = 0; i < labels.length; i++) {
var thisParticularLabel = labels[i].getName();
Logger.log(labels[i].getName());
if (thisParticularLabel === "@@UNREAD") {
var doesThisThreadHaveTheLabel = true;
};
}
if (thread.isUnread() && doesThisThreadHaveTheLabel === false) {
//Remove label
thread.addLabel(unreadlabel);
thread.moveToInbox();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在将线程移至收件箱之前,您需要确保它没有标签。因此,在If检查中添加另一个条件。
if (thread.isUnread() && doesThisThreadHaveTheLabel === false) {
Run Code Online (Sandbox Code Playgroud)
我创建了一个变量: doesThisThreadHaveTheLabel它将具有 true 或 false 值。在每个 for 循环之前它默认设置为 false。
var doesThisThreadHaveTheLabel = false;
for (var i = 0; i < labels.length; i++) {
Run Code Online (Sandbox Code Playgroud)
您可以调试代码来检查它:

在上图中,您可以在菜单中看到错误的图标。在单击该按钮之前,首先单击错误右侧的下拉菜单,然后选择要运行的函数的名称。另外,在代码中添加断点。在该图中,您将在代码编辑器的行号中看到一个红点。这就是代码将停止的地方。
我将标签@josh添加到我帐户中的一封电子邮件中,因此变量标签中有一个对象。但是,我没有任何带有标签@@UNREAD的电子邮件,因此您会注意到在变量列表中,变量unreadlabel的值为null。
在该图中,代码暂停在 269 行上。我可以通过单击“单步执行”图标来单步执行到下一行代码。将鼠标悬停在图标上即可弹出上下文帮助。

我逐行进一步,并检索了放入变量“ThisPspecialLabel”中的标签。您可以在窗口中看到它的值为@Josh。
我单步执行了该代码,并在主for 循环运行一次后结束。我还单独运行了该代码而不进行调试,它运行在:
执行成功 [总运行时间 0.246 秒]
您需要调试代码,查看每一行的作用,了解每个变量的值以及条件语句的工作原理。
| 归档时间: |
|
| 查看次数: |
5974 次 |
| 最近记录: |