发送电子邮件后如何获取ID消息并发送后续信息

时间:2019-07-29 12:01:17

标签: google-apps-script

我的google文档中有新用户,其名称为。我的脚本每天(晚上6点)发送带有欢迎消息的消息,并添加doc(日期发送,信息发送第一条消息)。 3天后发送第一封邮件。脚本首先发送“后续行动1”,然后在文档中添加信息。 7天脚本后,发送带有后续措施2的最后一封电子邮件。我的脚本有效! 但是我有问题,因为我的脚本每次发送新电子邮件时都不会发送带有线程的邮件。

我不知道如何从第一条消息中获取ID消息并在线程中发送后续1和后续2。

这是我的文档:https://imgur.com/1AqTcOj

  var docsID = SpreadsheetApp.openById("My_id_docs");
  var sheet1 = docsID.getSheetByName("Sheet1");
  var sheet2 = docsID.getSheetByName("Sheet2");
  var addressEmailSender = "My_EMAIL";

  var emailSubject = sheet2.getRange("C1").getValues();
  var emailContent = sheet2.getRange("A2").getValues();

  var emailFollowup1Subject = sheet2.getRange("C4").getValues();
  var emailFollowup1Content = sheet2.getRange("A5").getValues();

  var emailFollowup2Subject = sheet2.getRange("C8").getValues();
  var emailFollowup2Content = sheet2.getRange("A9").getValues();

  var lastRow = sheet1.getLastRow();
  var now = new Date();

  for (var i = 2; i <= lastRow; i++) {
    var tempTime = sheet2.getRange("B14");
    var CategoryMail = sheet1.getRange(i, 1).getValues();
    var Answer = sheet1.getRange(i, 8).isBlank();
    var UserEmail = sheet1.getRange(i, 9).getValues();

    if (CategoryMail == "Other" && Answer && UserEmail.length > 0 ) {
      var userName = sheet1.getRange(i, 10).getValues();

      if (userName.length > 0) {
        var messageTitle = "Hey " + userName + "," + '\n';
      } else {
        var messageTitle = "Hey," + '\n';
      }

      tempTime.setValue(new Date(now.setHours(0, 0, 0, 0))).setNumberFormat('dd/MM/yyyy');
      var TestTime = tempTime.getValue().valueOf();

      if(sheet1.getRange(i,2).isBlank()) {
        sheet1.getRange(i,2).setValue("yes");
        sheet1.getRange(i,5).setValue(new Date(now.setHours(0, 0, 0, 0))).setNumberFormat('dd/MM/yyyy');
        GmailApp.sendEmail(UserEmail, emailSubject, messageTitle + emailContent, {from: addressEmailSender, name: "Buddy"});
        GmailApp.getMessageById(id)
      }
      else {
        var Var0 = sheet1.getRange(i,5).getValue().valueOf();
        var Var1 = sheet1.getRange(i,6).getValue().valueOf();
        var Var2 = sheet1.getRange(i,7).getValue().valueOf();
        if((TestTime >= Var1 && TestTime < Var2) && sheet1.getRange(i,3).isBlank()  ) {
          sheet1.getRange(i,3).setValue("yes");          
          GmailApp.sendEmail(UserEmail, emailFollowup1Subject, messageTitle + emailFollowup1Content, {from: addressEmailSender, name: "Buddy"});
        }
        else if((TestTime >= Var2 && TestTime > Var1) && sheet1.getRange(i,4).isBlank() && sheet1.getRange(i,3).getValues() == "yes") {
          sheet1.getRange(i,4).setValue("yes"); 
          GmailApp.sendEmail(UserEmail, emailFollowup1Subject, messageTitle + emailFollowup2Content, {from: addressEmailSender, name: "Buddy"});
        }
      }
    }
  }
}```       

1 个答案:

答案 0 :(得分:0)

sendEmail()函数不会返回线程的ID。如果在发送电子邮件时将自己添加为cc,则可以执行搜索收件箱,然后获取ID。之后,您可以add messages to threads

一个更简单的解决方案是使用MailApp而不是GmailApp。与GmailApp的主要区别在于,您可以管理大多数Gmail功能。 请记住,您需要使用相同的主题。另外,它具有不同的语法:

MailApp.sendEmail("mail@example.com", "Subject", "body");