[英]Google Calendar event will not delete with Apps Script deleteEvent() method
我创建了一个脚本,该脚本循环遍历每个 google sheet 行并创建一个日历事件,如果第 5 列中单元格的背景为 = 深黄色 1。
function CheckDocument() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet1');
var tasksApproaching = ""; // list of items of approaching overdue tasks
var tasksOverdue = ""; // list of items that are overdue
var tasksApproachingArr = []; // array of approaching overdue tasks
var tasksOverdueArr = []; // array of overdue tasks
var timeRemaining = []; // array of time values (today - refreshdate) example (3/5/21 - 3/2/21 = 3 days)
var calendarID = sheet2.getRange(6,2).getValue(); //obtain calendarID
var eventCal = CalendarApp.getCalendarById(calendarID); //set object of calendarID
for (var i=3;i<n+1;i++){ //loop through sheet, add tasks to arrays if it meets conditional formatting color criteria
var taskRefreshDate = sheet1.getRange(i,5).getValue();
var background = sheet1.getRange(i,5).getBackground();
if (background == "#f1c232"){ //dark yellow 1 background color
calendarTask = sheet1.getRange(i,1).getValue(); //set title for calendar event creation
tasksApproachingArr.push(sheet1.getRange(i,1).getValue()); //send task name to array
timeRemainingMils = taskRefreshDate.getTime() - today; //Milliseconds of time between refresh date and today
timeRemaining.push(Math.floor(timeRemainingMils/(86400 * 1000))+1); //Convert milliseconds to # days
if(sheet1.getRange(i,9).getValue()==""){
eventCal.createAllDayEvent(calendarTask, taskRefreshDate, {
description: calendarTask
});
sheet1.getRange(i,9).setValue("Yes");
}
} else if(background == "#e06666") { //light red 1 background
tasksOverdueArr.push(sheet1.getRange(i,1).getValue());
} else if(sheet1.getRange(i,9).getValue()=="Yes"){
sheet1.getRange(i,9).setValue("");
}
}
}
如果背景更新为深绿色 1,我的目标是从我的日历中删除这些事件。
var startTime = new Date(2021,1,1,0,0,0);
var endTime = new Date(2021,12,31,0,0,0);
var events = eventCal.getEvents(startTime,endTime);
for (var e=0; e<events.length;e++){
eventStartTime = events[e].getStartTime();
eventTitle = events[e].getTitle();
for (var i=3;i<n+1;i++){
if((eventStartTime == sheet1.getRange(i,5).getValue()) && (eventTitle == sheet1.getRange(i,1).getValue()) && (sheet1.getRange(i,5).getBackground()=="#6aa84f")){
events[e].deleteEvent();
}
}
}
我可以成功创建日历事件,但是,当我通过将第 5 列中的一个单元格从深黄色更改为深绿色来更新电子表格时,该事件仍保留在我的日历上。 关于我缺少什么的任何想法? 谢谢。
比较Date
对象相等性的一些好方法是以下方法之一:
var d1 = new Date(2013, 0, 1);
var d2 = new Date(2013, 0, 1);
/*
* note: d1 == d2 returns false as described above
*/
d1.getTime() == d2.getTime(); // true
d1.valueOf() == d2.valueOf(); // true
Number(d1) == Number(d2); // true
+d1 == +d2; // true
因此,在您的代码中,比较可能是:
eventStartTime.getTime() == sheet1.getRange(i,5).getValue().getTime()
或上述任何其他方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.