0

我试图找到一种方法来暂停我的 Gmail 中的电子邮件。是的,我的 iDevice 上有 Mailbox.app,但我想要一种方法来暂停或“延迟”一些电子邮件。

我找到了一篇Blog Spot 文章和一篇Lifehacker文章。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)吗?我在哪里输入?

4

1 回答 1

0

你得到的错误是因为以代码速度创建 200 个标签对于 Gmail 来说太快了,并且被认为滥用了它的 API。所以,正如错误消息所暗示的那样,您可以Utilities.sleep(1000)在每个标签创建之间等待一秒钟。

我对脚本不熟悉(回旋镖对我来说效果很好),但您可以尝试手工制作 30、60、90 180 天的标签,然后让脚本来处理它们。那么你根本不需要担心标签的创建。

为了帮助您更好地理解您正在阅读的代码。下面解释了发生了什么以及如何插入Utilities.sleep(). 您需要决定要等待多长时间 1000 毫秒意味着您正在等待 200 秒,如果您有 3 分钟的空闲时间,那就可以了。您可以尝试查看 Gmail 应用程序在什么时候显示“哇,这就够了”。请慢点。

注意:我不是试图重新设计它以允许更好地创建/管理标签。可能有许多可以对代码进行的增强,虽然很诱人,但它们将作为练习留给读者。

RE你的馅饼:

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");
  }

}
于 2013-09-14T12:07:36.830 回答