【发布时间】:2021-06-26 07:42:23
【问题描述】:
我仍在学习 Apps 脚本。这是sample google sheet 和用于从 Google 工作表的自定义菜单创建日历事件的代码。我想在菜单选项中添加删除事件和日历功能。
但我无法通过 to 和 from 日期获取事件列表。我得到了this link的帮助
function delete_events()
{
//Please note: Months are represented from 0-11 (January=0, February=1). Ensure dates are correct below before running the script.
var fromDate = new Date(); //This represents June 1st 2020
var toDate = new Date(); //This represents June 30th 2020
toDate.setHours(toDate.getHours()+24);
var calendarID = 'c_9ngacs4sflij848armjj9i91dk@group.calendar.google.com'; //Enter your calendar ID here
var calendar = CalendarApp.getCalendarById(calendarID);
Logger.log('calendar: '+calendar.getName());
//Search for events between fromdate and todate with given search criteria
var events = calendar.getEvents(fromDate, toDate);
Logger.log('Event: '+events.length);
// events.forEach(function(e,i){Logger.log(e[i])});
for(var i=0; i<events.length;i++) //loop through all events
{
var ev = events[i];
Logger.log('Event: '+ev.getTitle()+' found on '+ev.getStartTime()); // Log event name and title
ev.deleteEvent(); // delete event
}
}
我的 appscript.json 文件添加了以下范围 -
"oauthScopes": [
"https://www.googleapis.com/auth/calendar",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/spreadsheets.currentonly",
"https://www.googleapis.com/auth/spreadsheets"
],
但是当我运行上面的代码时,我得到了关注 -
然后我看到了实际的日历,里面有很多活动。
为什么我的功能不能正常工作? 事件 id,CalId 是好的。那么空事件的原因是什么?
【问题讨论】:
-
我不是日历专家,所以只是猜测。看起来问题出在
getTitle()函数developers.google.com/apps-script/reference/calendar/… 可能,我不确定,您需要将https://www.google.com/calendar/feeds添加到您的json 中 -
实际上我认为问题在于 setHours() 只是设置了该日期的小时。所以你的 fromDate 和 toDate 是相同的,因此没有事件。尝试增加一天。
toDate=new Date(newDate().getFullYear(),new Date().getMonth(),new Date().getDate() + 1); -
@Cooper,
setHours()适合我。你可以自己试试。这是另一个与setDate()类似的例子:stackoverflow.com/questions/68088181/…他可以使用toDate.setDate(toDate.getDate()+1);都一样 -
我想问题不在于添加日期或时间。我已经尝试了所有这些。我需要尝试一些其他技巧。
-
@yuri-khristich 感谢您的链接。这是一个不错的。
标签: api google-apps-script calendar