gpt4 book ai didi

gmail - 使用 Google 脚本检查消息是否有标签

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:03 25 4
gpt4 key购买 nike

在工作中,我们有一个 google 脚本代码,每 4 小时运行一次,并检查每个人的@folders 是否有未读邮件。如果发现未读邮件,则会将其移至收件箱并标记为@@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();
}
}

}
}

如果电子邮件没有@@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();
}
}

}
}

在将主题移动到收件箱之前,您需要确保它没有标签。因此,向 If 检查添加另一个条件。

if (thread.isUnread() && doesThisThreadHaveTheLabel === false) {

我创建了一个变量:doesThisThreadHaveTheLabel,它将具有真值或假值。在每个 for 循环之前默认设置为 false。

var doesThisThreadHaveTheLabel = false;

for (var i = 0; i < labels.length; i++) {

您可以调试代码来检查它:

Debug Window

在上图中,您可以在菜单中看到一个错误图标。在单击它之前,首先单击错误右侧的下拉菜单,然后选择要运行的函数的名称。另外,在代码中添加一个断点。在该图片中,您会在代码编辑器的行号中看到一个红点。这就是代码将停止的地方。

我将标签 @josh 添加到我帐户中的一封电子邮件中,因此变量 label 中有一个对象。但是,我没有任何带有标签 @@UNREAD 的电子邮件,因此您会注意到在变量列表中,变量 unreadlabel 的值为

在那张图片中,代码暂停在 269 行。我可以通过单击step in 图标step in 到下一行代码。将鼠标悬停在图标上可弹出上下文帮助。

Debug The Code

我进一步逐行执行,并检索了放入变量“ThisParticularLabel”中的标签。您可以在窗口中看到它的值为 @Josh

我单步执行了该代码,并在主 for 循环 运行一次后结束。我还自己运行了这段代码,没有调试它,它运行在:

执行成功 [0.246 秒总运行时间]

您需要调试您的代码,查看它在每一行中的作用,并了解每个变量的值是什么,以及条件语句是如何工作的。

关于gmail - 使用 Google 脚本检查消息是否有标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com