google-apps-script - 根据活动标题删除 Google 日历活动
问题描述
出于某种原因,在我的日历中创建了一系列不被视为重复事件的事件。由于我们谈论的是未来 3 年每周 2 次活动,我期待 Google Apps 脚本从我的日历中删除这些活动。
这些事件有一个单一的特定名称,由我创建。我想删除将来具有该特定名称并由我创建的所有事件。
由于我对脚本完全陌生,因此我尝试了下面的示例代码。不幸的是,它在我设置的测试日历中没有做任何事情(测试)。Google Apps 脚本中的调试选项不会生成任何错误或消息。运行脚本也不会生成任何日志...
那么,谁能帮助指出下面的代码有什么问题,以及如何根据事件标题和该事件的创建者删除特定事件?
function delete_events()
{
var calendarName = 'Test';
// for month 0 = Jan, 1 = Feb etc
// below delete from Jul 13 2020 to Jul 18 2020
var fromDate = new Date(2020,7,13,0,0,0);
var toDate = new Date(2020,7,18,0,0,0);
var calendar = CalendarApp.getCalendarsByName(calendarName)[0];
var events = calendar.getEvents(fromDate, toDate);
for(var i=0; i<events.length;i++){
var ev = events[i];
// show event name in log
Logger.log(ev.getTitle());
ev.deleteEvent();
}
}
解决方案
确保正确设置日期并查询创作者[]
- 正如对您的问题的评论和代码中的评论所指出的那样 - Javascript计算从
0
- Apps 脚本具有
getCreators()
返回给您一个数组(!)的方法,其中可能包含多个创建者
- 因此,您不能与 进行比较
==
,但需要使用indexOf()
样本:
function delete_events()
{
var calendarName = 'Test';
var myEmail = "YOUR EMAIL";
var myTitle = "Hello";
// for month 0 = Jan, 1 = Feb etc
// below delete from now to Jul 18 2020
var now = new Date();
var toDate = new Date(2020,6,18,0,0,0);
var calendar = CalendarApp.getCalendarsByName(calendarName)[0];
var events = calendar.getEvents(now, toDate);
for(var i=0; i<events.length;i++){
var ev = events[i];
// show event name in log
Logger.log(ev.getTitle());
var creators = ev.getCreators();
//check if you are the calendar creator and the event title matches
if(creators.indexOf(myEmail) >-1 && ev.getTitle() == myTitle){
ev.deleteEvent();
}
}
}
推荐阅读
- graphviz - Graphviz 子图布局
- xml - 如何遍历 xml 文件中的每个节点并在节点名称与字符串匹配时返回 true,否则使用 XQuery 和 XPath 返回 false?
- javascript - 我一直在尝试创建一个反应应用程序,但我一直收到这个错误:“npm ERR!cb() never call!”
- python-3.x - 计算不是从数据框 pandas 中获取的
- python - 关于二维数组的Python问题
- scala - 在 Travis 或 Github Actions 作业之间重用 SBT 编译的结果
- python - 类型错误:Pandas Dataframe 应用函数,参数传递
- corda - 如何将corda项目部署到服务器
- json - Powershell Core 将 JSON 中的数字反序列化为 Int64,而 Windows Powershell 将其反序列化为 Int32
- c - 如果输入 5 个或更多字符,如何打印错误消息