应用程序脚本重新打开办公室消息

时间:2017-04-03 00:26:28

标签: google-apps-script

尝试获取应用脚本以检查消息进入的星期几,如果在某些天(例如星期六和星期日)收到消息,则自动回复消息。我希望格式化消息中的文本有点包括一些文本的颜色,回车等。我有下面的代码使用两个错误。 1.回复文本未格式化。 2.如果其他人打开了不在办公室的消息,我最终会收到一连串的电子邮件。这可以通过向消息线程添加标签来解决,自动回复回复?

感谢您提前提供任何帮助。

function autoReply() {
  var interval = 5;          //  if the script runs every 5 minutes; change otherwise
  var daysOff = [6,0];   // 1=Mo, 2=Tu, 3=We, 4=Th, 5=Fr, 6=Sa, 0=Su
  var message = "**Auto Reply**  Thank you for your email!   I am out of the office for the weekend spending time with my family. I will be back in the office Monday at 8:00 am.  My usual office hours are Monday- Friday 8:00 am-4:00 pm EST. I monitor email periodically over weekends for emergencies.  I look forward to assisting you.  Thank you!";
  var date = new Date();
  var day = date.getDay();
  if (daysOff.indexOf(day) > -1) {
    var timeFrom = Math.floor(date.valueOf()/1000) - 60 * interval;
    var threads = GmailApp.search('is:inbox after:' + timeFrom);
    for (var i = 0; i < threads.length; i++) {
      threads[i].reply(message);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

首先,您的邮件没有任何格式。实质上,您发送的是纯文本响应。在字符串中使用HTML格式并将其用作htmlBody参数(详细了解here)。

接下来是回复循环。谷歌有一个内置的不在办公室回复系统,他们这样做的方式是有人只有几天得到自动回复。我建议做类似的事情。一旦您的脚本触发,您就可以使用PropertiesService.getUserProperties()存储电子邮件(详细了解here)。所以基本上你会做

PropertiesService.getUserProperties().setProperty(email, date)

您应该从收到的电子邮件中抓取email,并且您已经拥有date。请记住,您可能希望获取所有涉及的电子邮件,并通过相同的消息通知每个人,因此您必须循环浏览这些电子邮件,以便为每封电子邮件创建单独的条目。

因此,您希望在功能开始时尽早收到电子邮件,然后尝试PropertiesService.getUserProperties().getProperty(email),如果您设法检索非nullundefined属性,则应退出超出return的功能,因为您已经向他们发送了回复,而您不再需要了。