我想根据电子邮件进入我的收件箱的时间来创建日历事件。我希望这发生在电子邮件到达后14天,但特别是在上午9点。现在,我正在尝试让脚本在第二天上午9点运行,然后在该运行时间的13天后创建一个事件。在脚本中有没有更有效的方法来做到这一点呢?
//This script runs the next day around 9am, calendar invite will be created for 13 days form then
to account for the next day
var now = new Date().getTime();
var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
for (i in threads) {
cals[0].createEvent(reminderLabel + '- '+ i.getFirstMessageSubject(),
new Date(now+(MILLIS_PER_DAY*13)),
new Date(now+(MILLIS_PER_DAY*13)+900000), {description: i.getPermalink()});
}发布于 2020-02-11 05:41:45
这是一个我用来创建事件的函数,当我只想在6小时后通知自己时,我使用了一种相当神秘的输入技术,它被描述为文本框EventTitle/hours/min/的html占位符属性。我在/上拆分输入字符串如果长度不超过3,那么我会自动创建30,15,0分钟的通知,但我在两周后创建了一个事件,并使用此输入字符串TwoWeeksFromToday/336/0/18720收到了将在明天发生的通知。这是代码。
function createEventWithReminders(eA) {
var minute=60*1000;
var hour=60*minute;
var cal=CalendarApp.getCalendarById(getGlobal('DailyEventsId'));
var now=new Date();
var startValue=now.valueOf() + (Number(eA[1]) * hour ) + (Number(eA[2]) * minute);
var start=new Date(startValue);
var endValue=start.valueOf() + (10 * minute);
var end=new Date(endValue);
var event=cal.createEvent(eA[0], start, end);
if(eA.length>3) {
for(var i=3;i<eA.length;i++) {
event.addEmailReminder(eA[i]);
}
}
else{
event.addEmailReminder(0);
event.addEmailReminder(15);
event.addEmailReminder(30);
}
return true;
}我已经这样用了大约3年了。
日历事件图像:

发布于 2020-02-11 23:40:38
您可以在time-driven trigger上每天自动运行该函数
函数的内容应如下所示
if语句以仅列出在过去24小时内到达的消息示例(绑定一个可安装的时间驱动触发器):
function myFunction() {
var threads = GmailApp.getInboxThreads();
var cals = CalendarApp.getAllCalendars();
var now = new Date().getTime();
var nineAm = new Date();
nineAm.setHours(09);
nineAm.setMinutes(00);
nineAm = nineAm.getTime();
var reminderLabel = "Reminder: ";
var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
for (var i =0; i <threads.length; i++) {
if(threads[i].getLastMessageDate().getTime()>=(now-24*3600*1000)){
Logger.log(threads[i].getLastMessageDate());
cals[0].createEvent(reminderLabel + '- '+ threads[i].getFirstMessageSubject(),
new Date(nineAm+(MILLIS_PER_DAY*13)),
new Date(nineAm+(MILLIS_PER_DAY*13)+900000), {description: threads[i].getPermalink()});
}else{
return;
}
}
}发布于 2020-02-12 05:48:14
您可以尝试这样做:
var event = CalendarApp.createEventFromDescription('Remind for email in 14 days at 9 am');
event.setTime(event.getEndTime(), event.getEndTime()); // fix Calendar bug with start datehttps://stackoverflow.com/questions/60157096
复制相似问题