我正在尝试编写一个脚本来操作日历数据。我似乎正在检索事件,但对象没有实现预期的方法。
这是我的 MVE:
const response = Calendar.Events.list(myCalendar,
{ timeMin: (new Date()).toISOString(),
timeMax: (new Date(new Date().getTime() + (24 * 60 * 60 * 1000))).toISOString(),
showDeleted: false,
singleEvents: true,
maxResults: 100,
orderBy: 'startTime',
timeZone: 'UTC' }
);
for (event of response.items) {
Logger.log(event);
Logger.log(event.summary + " / " + event.getTag("PRInv");
}
我希望 Calendar.Events.list.items 是一个事件对象的数组。虽然第一个 Logger.log 转储看起来可能是事件对象的内容:
{
htmlLink=https://www.google.com/calendar/event?eid=NjR...ldmEuY29t&ctz=UTC,
description=hello world,
[email protected],
summary=Colin - test calendar entry,
kind=calendar#event,
updated=2024-04-18T21:08:13.098Z,
end={dateTime=2024-04-19T21:00:00Z, timeZone=America/Los_Angeles},
reminders={useDefault=true},
id=fgfkgfgkfjgkdjgjd,
etag="3426948986196000",
sequence=0.0,
eventType=default,
status=confirmed,
start={timeZone=America/Los_Angeles, dateTime=2024-04-19T20:00:00Z},
organizer={self=true, [email protected]},
created=2024-04-18T21:08:13.000Z,
creator={[email protected], self=true}
}
但是下一行失败了
event.getTag is not a function
使用
Calendar.getEventById(event.id).getTag("PRInv");
我得到
Calendar.getEventById is not a function
,尽管文档(再次)说它是一个函数。
我在这里缺少什么?
我从你的展示脚本中猜测,你可能会认为日历API(Calendar)和日历服务(CalendarApp)是相同的。不幸的是,这些是不同的。
如果您想通过Calendar API使用日历服务(CalendarApp)的
getTag("PRInv")
,则需要搜索extendedProperties
的属性。如果修改Logger.log(event.summary + " / " + event.getTag("PRInv");
,则变为如下。
Logger.log(event.summary + " / " + event.extendedProperties.shared["PRInv"]);
顺便说一句,
Calendar.getEventById(event.id).getTag("PRInv");
不能使用。在这种情况下,需要如下所示。
CalendarApp.getCalendarById(myCalendar).getEventById(event.iCalUID).getTag("PRInv")
当这些要点反映在你的放映脚本中时,就会变成如下所示。
const response = Calendar.Events.list(myCalendar,
{
timeMin: (new Date()).toISOString(),
timeMax: (new Date(new Date().getTime() + (24 * 60 * 60 * 1000))).toISOString(),
showDeleted: false,
singleEvents: true,
maxResults: 100,
orderBy: 'startTime',
timeZone: 'UTC'
}
);
for (event of response.items) {
Logger.log(event);
Logger.log(event.summary + " / " + event.extendedProperties.shared["PRInv"]); // and, Logger.log(event.summary + " / " + event.getExtendedProperties().getShared()["PRInv2"]);
}
PRInv
的值。