Google Apps脚本日历服务:如何使用PropertiesService存储和检索CalendarEvent? [英] Google Apps Script Calendar Service: How to store and retrieve CalendarEvents using PropertiesService?

查看:74
本文介绍了Google Apps脚本日历服务:如何使用PropertiesService存储和检索CalendarEvent?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我指的是这个问题.

此代码

var cal = CalendarApp.getCalendarById("Calendar Id");
var startTime = new Date(1850, 0, 1);
var endTime = new Date(2100, 0, 1);
var events = cal.getEvents(startTime, endTime);
Logger.log(events);
var sp = PropertiesService.getScriptProperties();
sp.setProperty("events", JSON.stringify(events));
events = JSON.parse(sp.getProperty("events"));
Logger.log(events);

返回:

Info [CalendarEvent, CalendarEvent, CalendarEvent, CalendarEvent, CalendarEvent]
Info [{}, {}, {}, {}, {}]

如何使用PropertiesService存储和检索CalendarEvent(不仅是ID)?

How to store and retrieve CalendarEvents (not only their IDs) using PropertiesService?

推荐答案

工作流程:

我认为最好的选择是执行以下操作:

Workflow:

I'm thinking the best option is to do the following:

  • Retrieve event IDs from previously processed events, stored in Properties (variable oldEventIDs).
  • Retrieve all events in the calendar with getEvents (variable allEvents).
  • Filter the events in the calendar, removing the ones already in Properties (variable newEvents).
  • After processing each new event, append the event ID to oldEventIDs.
  • Store oldEventIDs in Properties.
var sp = PropertiesService.getScriptProperties();
var oldEventIDs = sp.getProperty("events").split(",");
var cal = CalendarApp.getCalendarById("Calendar Id");
var startTime = new Date(1850, 0, 1);
var endTime = new Date(2100, 0, 1);
var allEvents = cal.getEvents(startTime, endTime);
var newEvents = allEvents.filter(event => !oldEventIDs.includes(event.getId()));
newEvents.forEach(event => {
  // Event processing
  oldEventIDs.push(event.getId());
});
sp.setProperty("events", oldEventIDs.toString());

注意:

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆