是否可以使用Google Apps脚本创建Gmail标签并选择其颜色



我正在尝试使用Google Apps脚本为我的Gmail收件箱创建一个自动标签器。

在某些情况下,我的大多数电子邮件都有截止日期,而我将在下面发布的代码通过电子邮件解析,找到#DL并创建带有截止日期的标签。我还希望标签具有特定的颜色,具体取决于该截止日期的时间。

不幸的是,我发现GAS API无法更改/创建具有颜色的标签,但我还发现,通过高级Google服务,可以定义标签的颜色。在接受条款和条件并启用高级Google服务时,AutoComplete向我展示了选项:

gmail.newlabelcolor((

是否可以使用它来创建具有不同颜色的新标签,如果是,我将如何将其与下面的代码接口?

var filters = [
  { match: /[nr][ t]*#DL:[ t]*([^nr]*)/, archive: false },
];
var from = [];
function labeler() {
  var batchSize = 10;
  var labelCache = {};
  var query = "in:anywhere";
  var threads = GmailApp.search(query, 0, batchSize);
  GmailApp.getMessagesForThreads(threads);
  var findOrCreateLabel = function(name) {
  if (labelCache[name] === undefined) {
    labelCache[name] = GmailApp.getUserLabelByName(name) || GmailApp.createLabel(name);
  }
    //GmailApp.createLabel(name);
    //createLabelByGmailApi(name);
  return labelCache[name];
}
  var applyLabel = function(name, thread){
    var label = null;
    var labelName = "";
    name.split('&').forEach(function(labelPart, i) {
      labelName = labelName + (i===0 ? "" : "&") + labelPart.trim();
      label = findOrCreateLabel(labelName);
    });
    thread.addLabel(label);
  }
  threads.forEach(function(thread) {
    var messages = thread.getMessages();
    if (messages == null) return;
    var message = messages[messages.length - 1];
    var body = message.getRawContent();
    var archive = true;
    filters.forEach(function(filter){
      var matches = filter.match.exec(body);
      if (matches !== null) {
        var label = filter.name || matches[1];
        var data = datestd(label);
        var cor = datecalc(data);
        label = "Datas/" + data;
        if (label !== undefined) applyLabel(label, thread);
        if (filter.archive !== undefined && !filter.archive) archive = false;
      }
    });
    if (archive) thread.moveToArchive();
  });
}
function createLabelByGmailApi(name,color) {
  var label = GmailApp.getUserLabelByName(name);
  if (label) return label;
  var textColor = "#ffffff";
  if (color=='red'){
  var backgroundColor = "#ac2b16";
  } else if (color=='yellow'){
  var backgroundColor = "#fad165";
  } else if (color=='green'){
  var backgroundColor = "#076239";
  } else {
  var backgroundColor = "#41236d";
  }
  var userId = "me";
  var resource = Gmail.newLabel();
  resource.labelListVisibility = "labelShow";
  resource.messageListVisibility = "show";
  resource.name = name;
  var labelColor = Gmail.newLabelColor();
  labelColor.textColor = textColor;
  labelColor.backgroundColor = backgroundColor;
  resource.color = labelColor;
  Gmail.Users.Labels.create(resource, userId);
  return GmailApp.getUserLabelByName(name);
}

对不起,如果这个问题似乎很愚蠢,或者如果真的很容易做,我并不是真的经验丰富,并且没有通过我的搜索找到它。

对于问题1:

是否可以使用它来创建具有不同颜色的新标签?

这个答案是肯定的。

  • 您想用颜色创建新标签。
  • 您想使用Google Apps脚本使用Gmail API实现此目的。
  • 您已经在高级Google Services上启用了Gmail API。

如果我的理解是正确的,那么此示例脚本和修改如何?请将其视为几个答案之一。

在此示例脚本中,用户的方法:使用Gmail API的创建。

示例脚本:

请复制并将以下功能粘贴到脚本编辑器。当您使用此功能时,请设置要使用的颜色。

function createLabelByGmailApi(name) {
  var label = GmailApp.getUserLabelByName(name);
  if (label) return label;
  var textColor = "#89d3b2"; // Please set this.
  var backgroundColor = "#ffbc6b"; // Please set this.
  var userId = "me";
  var resource = Gmail.newLabel();
  resource.labelListVisibility = "labelShow";
  resource.messageListVisibility = "show";
  resource.name = name;
  var labelColor = Gmail.newLabelColor();
  labelColor.textColor = textColor;
  labelColor.backgroundColor = backgroundColor;
  resource.color = labelColor;
  Gmail.Users.Labels.create(resource, userId);
  return GmailApp.getUserLabelByName(name);
}

问题2:

我将如何与下面的代码接口?

要使用脚本使用上述函数,请按以下方式修改。

修改了您的脚本:

从:
var findOrCreateLabel = function(name) {
  if (labelCache[name] === undefined) {
    labelCache[name] = GmailApp.getUserLabelByName(name) || GmailApp.createLabel(name);
  }
  return labelCache[name];
}
到:
var findOrCreateLabel = function(name) {
  if (labelCache[name] === undefined) {
    labelCache[name] = GmailApp.getUserLabelByName(name) || createLabelByGmailApi(name); // Modified
  }
  return labelCache[name];
}

注意:

  • textColorbackgroundColor的样品颜色是一个极端的例子。

参考:

  • 用户。标签:创建
    • 请从上述文档中选择textColorbackgroundColor

如果我误解了您的问题,这不是您想要的结果,我深表歉意。

最新更新