我试图找到一种在Gmail中暂停电子邮件的方法。是的,我在我的iDevice上安装了Mailbox.app,但我希望有一种方法可以使用Snooze或“Laterize”一些电子邮件。
我找到了Blog Spot post和Lifehacker one。 Lifehacker文章只是为Blog Sport添加了更多图片。我按照Lifehacker的说明进行操作。我只对代码做了一次偏离。在代码为“7”的两个实例中,我将其替换为“200”。
我的代码是:
var MARK_UNREAD = false;
var ADD_UNSNOOZED_LABEL = false;
function getLabelName(i) {
return "Snooze/Snooze " + i + " days";
}
function setup() {
// Create the labels we’ll need for snoozing
GmailApp.createLabel("Snooze");
for (var i = 1; i <= 200; ++i) {
GmailApp.createLabel(getLabelName(i));
}
if (ADD_UNSNOOZED_LABEL) {
GmailApp.createLabel("Unsnoozed");
}
}
function moveSnoozes() {
var oldLabel, newLabel, page;
for (var i = 1; i <= 200; ++i) {
newLabel = oldLabel;
oldLabel = GmailApp.getUserLabelByName(getLabelName(i));
page = null;
// Get threads in "pages" of 100 at a time
while(!page || page.length == 100) {
page = oldLabel.getThreads(0, 100);
if (page.length > 0) {
if (newLabel) {
// Move the threads into "today’s" label
newLabel.addToThreads(page);
} else {
// Unless it’s time to unsnooze it
GmailApp.moveThreadsToInbox(page);
if (MARK_UNREAD) {
GmailApp.markThreadsUnread(page);
}
if (ADD_UNSNOOZED_LABEL) {
GmailApp.getUserLabelByName("Unsnoozed")
.addToThreads(page);
}
}
// Move the threads out of "yesterday’s" label
oldLabel.removeFromThreads(page);
}
}
}
}
但是我收到了一个错误:
您的脚本Gmail Snooze最近未能完成 成功。故障摘要如下所示。
详细说明:
Start: 9/10/13 12:16 AM
Function: moveSnoozes
Error Message: Service invoked too many times in a short time: gmail rateMax. Try Utilities.sleep(1000) between calls. (line 24, file "Code")
Trigger: time-based
End: 9/10/13 12:22 AM
有人知道如何使用Utilities.sleep(1000)
吗?我在哪里输入?
答案 0 :(得分:0)
您遇到的错误是因为以代码速度创建200个标签对于Gmail而言太快,并且被视为滥用它的API。因此,正如错误消息所示,您可以使用Utilities.sleep(1000)
在每个标签创建之间等待一秒钟。
我不熟悉脚本(Boomerang对我来说效果很好),但您可以尝试手工制作30,60,90 180天的标签并让脚本接收它们。然后你根本不需要担心标签创建。
努力帮助您更好地理解您正在阅读的代码。以下是对正在发生的事情以及如何插入Utilities.sleep()
的说明。您需要决定等待1000ms的时间意味着您需要等待200秒,如果您有3分钟的备用时间,那就可以了。您可以尝试查看Gmail应用在什么时候说'哇哇那就足够了。慢慢来吧。'
注意:我并未尝试对其进行重新设计,以便更好地创建/管理标签。可能会对代码进行一些增强,虽然很诱人,但它们仍将作为读者的练习。
你的牧师:
function setup() {
// This creates 1 label called "Snooze"
// it probably isn't causing the problem
GmailApp.createLabel("Snooze");
// This piece is a loop that will execute 200 times.
// It will do so as fast as GAS will let it.
// This is probably where the problem is...
for (var i = 1; i <= 200; ++i) {
// Create the label
GmailApp.createLabel(getLabelName(i));
// We should wait a bit before making the next one
// Utilities.sleep() will do well to go here
Utilities.sleep(/*Milliseconds to wait*/);
}
// I doubt this is causing the problem either.
// It's only one label creation
if (ADD_UNSNOOZED_LABEL) {
GmailApp.createLabel("Unsnoozed");
}
}