我有一个脚本可以从工作表中更新日历。有没有办法获得一个事件的eventID,如果它不存在我将添加到日历?
什么是要创建的事件的ID(标题,开始,停止)
然后,我可以根据现有事件的eventID检查它,如果还没有,则添加。我认为这比在添加新属性之前检查现有事件以匹配所有属性要快,或者只是继续前进
我不认为ID的工作方式与您认为的方式相同(作为其中信息的某种散列)。你能检查一下你想要的标题吗?我认为这就足够了。
这是一个让你入门的脚本,它会在接下来的20天内发现下一次“Sample Meeting”。您可以轻松地将范围缩小到一天,然后添加一个“其他”来创建新会议。
function insertItem() {
var fromDate = new Date(); //This is Today
var toDate = new Date();
toDate.setDate(toDate.getDate()+20);
Logger.log("From "+fromDate+" to "+toDate);
var calendar = CalendarApp.getDefaultCalendar();
var events = calendar.getEvents(fromDate, toDate);
for(var i=0; i<events.length;i++)
{
var ev = events[i];
var title = calendar.getEventSeriesById(ev.getId()).getTitle();
if (title.indexOf("Sample Meeting")>-1){
var start = ev.getStartTime();
Logger.log("Found Team Meeting");
var id = ev.getId();
var date = ev.getStartTime();
var desc = ev.getDescription();
return;
}
}
}
它可以做到,但它需要一些工作。
默认情况下会自动生成事件ID。 However, you can generate custom ids for an event as long as they conform to Google's format requirements。因此,您必须自己管理这些事件ID的生成。
您必须确保id是唯一的,因此您可能希望将其基于与事件相关的输入组合。
一旦你有一些生成唯一id的方法,你可以使用它直接通过id获取事件,但你必须使用Advanced Calendar Service(内置服务不允许按事件id查找,但它允许查找iCalUID)。