【问题标题】:Gmail apps script edit body before forwardingGmail 应用程序脚本在转发前编辑正文
【发布时间】:2020-01-22 08:24:19
【问题描述】:

我正在使用 Gmail 应用程序脚本转发带有特定标签的电子邮件...但我想在转发之前编辑邮件正文。

function fwdFB(){


var label = GmailApp.getUserLabelByName('fb');
  var threads = label.getThreads();
  for(var m in threads){
    var messages = threads[m].getMessages();
    for(var y in messages){ messages[y].forward('w@yahoo.com',{from:'webmaster@gmail.com'}) }
    threads[m].moveToTrash();
  }
}

我不清楚如何插入getBody() 方法来编辑消息。 (具体来说,我想从消息中删除某个 HTML 块。它在每条消息中都是相同的块。)

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    forward(recipient, options) 的选项不提供修改消息正文的端点。您必须手动执行此操作,方法是在根据需要修改正文后发送消息。

    示例:

    function fwdFB(){
    var label = GmailApp.getUserLabelByName('fb');
      var threads = label.getThreads();
      for(var m in threads){
        var messages = threads[m].getMessages();
        for(var y in messages){ 
         var oldBody = messages[y].getBody();
         var newBody = oldBody.substring(1, 10)+" PS: This is a modification."
         var oldSubject = messages[y].getSubject();
          var newSubject = "Fwd: "+ oldSubject; 
          GmailApp.sendEmail('w@yahoo.com', newSubject, newBody, {from:'webmaster@gmail.com'})
        }
        threads[m].moveToTrash();
      }
    }
    

    更新

    如果保留消息历史记录对您很重要,您需要执行额外的步骤来串接消息。 @tehhowch 提供了一个很好的 example 说明如何这样做。

    【讨论】:

    • 这也可能会丢失线程/对话信息
    • 这当然是真的 - 除非您手动检索并插入线程历史记录。我不知道直接修改转发消息正文的可能性。
    • 需要做类似于this 的事情来维护线程信息。我建议只提及它,如果 OP 足够关心它,他们将有一个参考开始。
    • 谢谢。不,我不在乎线程。这只是用来自动化一些任务,因为 IFTTT 的 Gmail 集成现在没用了。
    • 在这种情况下,您可以使用上面提供的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2016-11-10
    相关资源
    最近更新 更多