首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能用Google Script在特定的时间为未来的日期创建日历事件吗?

你能用Google Script在特定的时间为未来的日期创建日历事件吗?
EN

Stack Overflow用户
提问于 2020-02-11 03:27:09
回答 3查看 170关注 0票数 0

我想根据电子邮件进入我的收件箱的时间来创建日历事件。我希望这发生在电子邮件到达后14天,但特别是在上午9点。现在,我正在尝试让脚本在第二天上午9点运行,然后在该运行时间的13天后创建一个事件。在脚本中有没有更有效的方法来做到这一点呢?

代码语言:javascript
复制
//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()});
}
EN

回答 3

Stack Overflow用户

发布于 2020-02-11 05:41:45

这是一个我用来创建事件的函数,当我只想在6小时后通知自己时,我使用了一种相当神秘的输入技术,它被描述为文本框EventTitle/hours/min/的html占位符属性。我在/上拆分输入字符串如果长度不超过3,那么我会自动创建30,15,0分钟的通知,但我在两周后创建了一个事件,并使用此输入字符串TwoWeeksFromToday/336/0/18720收到了将在明天发生的通知。这是代码。

代码语言:javascript
复制
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年了。

日历事件图像:

票数 0
EN

Stack Overflow用户

发布于 2020-02-11 23:40:38

您可以在time-driven trigger上每天自动运行该函数

函数的内容应如下所示

  • 实现if语句以仅列出在过去24小时内到达的消息
  • 创建时间为9:00 am of today的date对象
  • 对于所有新消息,创建从今天上午9:00起13天内的事件

示例(绑定一个可安装的时间驱动触发器):

代码语言:javascript
复制
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;
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2020-02-12 05:48:14

您可以尝试这样做:

代码语言:javascript
复制
var event = CalendarApp.createEventFromDescription('Remind for email in 14 days at 9 am');
event.setTime(event.getEndTime(), event.getEndTime()); // fix Calendar bug with start date

文档:createEventFromDescription(description)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60157096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档