使用Google Apps脚本响应Google Calendar API的推送通知

时间:2018-08-21 17:20:58

标签: google-apps-script push-notification google-calendar-api

每当我拥有的一系列日历发生更改时,我都想使用Google Apps脚本来更新Google电子表格并使用Gmail API发送电子邮件。

Google日历push notifications是否可以与Google App脚本一起使用,还是需要其他某种平台?

我愿意学习任何必要的知识。我了解必须使用域名才能收到通知。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

不幸的是,使用Google App Script不可能做到这一点(至少在撰写本文时还不行)。

您可以尝试创建Google Apps Script(GAS)网络应用,并将其网址用作Calendar API推送通知的端点。但是,由Calendar API发送的推送通知的数据有效载荷位于自定义HTTP标头中,而该标头目前无法从GAS Web应用访问。

还有其他解决方案,但它们将带您进入GSuite生态系统之外,而且不太可能免费。但是,如果您要完成编程技能方面的工作,并且有能力在平台上进行金钱投资,则应查看Google Cloud Functions。它是一种基于云的按需付费的微服务,但如果您保持在每月免费使用配额之内,它实际上是免费的。

答案 1 :(得分:0)

如果您熟悉GAS(Google Apps脚本),这是一个非常简单的任务,下面的代码只是所需内容的一部分(event.getLastUpdated是技巧),但是它给出了如何完成操作的想法您需要。我也有这个要求,对我来说很好...

设置带有日历详细信息的电子表格,然后将日历信息发布到其中...

  function getCalendars()
  {
   var cal = CalendarApp.getCalendarsByName(calName)[0]; // loop here with all your Calenders
   var events = cal.getEvents( date1, date2 ); // start date & end date
   for (var x in events ) 
   { 
      var event = events[x];
      var title = event.getTitle();
      var created = event.getDateCreated();
      var lastMod = event.getLastUpdated();
      var lastRead = getLastModifiedFromSpreadSheet();
      var diff= daysDiff(lastMod, read);
      if (diff > 0) {putNewDateInSpreadsheet(); doYourStuff;)
    }
  }

  function daysDiff(a, b) { // change to hours or minutes if required
  var oneDay = 1000 * 60 * 60 * 24;
  return Math.floor(b.getTime() / oneDay) - Math.floor(a.getTime() / oneDay);
  }