for-loop - 将假期周数组复制到新日历中
问题描述
更新了代码,下面有新的麻烦。
我正在改进此脚本以将完整的假期周复制到新日历中。
当目标日历中不存在其他事件时,它现在可以很好地与任何数组成员一起使用:
if ( eventToCheck.length == 0 ) {
copyHoliday = true;
}
但是当存在其他事件时,什么也不会发生:
for (var j = 0; eventToCheck.length > 0; j++) {
if ( eventToCheck[j].getTitle() !== holidayArray[0][1] ) {
copyHoliday = true;
}
TypeError:无法读取未定义的属性“getTitle”:我认为 eventToCheck 是所有现有事件的数组,eventToCheck[j] 应该是第 j 个事件,因此应该有一个标题。这是错的吗?
完整代码:
function copy5yHoliday() {
var calendarSource = CalendarApp.getCalendarById('de.german#holiday@group.v.calendar.google.com');
var calendarDestination = CalendarApp.getCalendarById('4***************4@group.calendar.google.com');
var start = new Date('2021', '0', '1');
// Sometimes, years are not 365 days, so better spell it out
var end = new Date('2021', '11', '31');
var eventToCopy = calendarSource.getEvents(start, end);
//var eventToCheck = calendarDestination.getEvents(start, end); //check if already inserted
var easterArr = ['Karfreitag','Karwoche test1']; // 0,0 0,1
var christmasArr = ['Heiligabend','Weihnachtswoche']; // 1,0 1,1
var newYearArr = ['Neujahrstag','Neujahrswoche']; // 2,0 2,1
var holidayArray = [easterArr, christmasArr, newYearArr];
var copyHoliday;
for (var i in eventToCopy) {
if (eventToCopy[i].getTitle() == holidayArray[0][0]) {
{
var eventWeekDay = eventToCopy[i].getAllDayStartDate().getDay(); //get weekday to calculate circumfering week
var toMonday = eventWeekDay - 1;
var toSunday = 7 - eventWeekDay;
var startDate = eventToCopy[i].getAllDayStartDate();
startDate.setDate(startDate.getDate() - toMonday)
var endDate = eventToCopy[i].getAllDayEndDate();
endDate.setDate(endDate.getDate() + toSunday);
var eventToCheck = calendarDestination.getEvents(startDate, endDate); //get all events in this period
if ( eventToCheck.length == 0 ) {
copyHoliday = true;
}
for (var j = 0; eventToCheck.length > 0; j++) {
if ( eventToCheck[j].getTitle() !== holidayArray[0][1] ) {
copyHoliday = true;
}
else { break; }
}
if (copyHoliday == true) {
calendarDestination.createAllDayEvent(holidayArray[0][1], startDate, endDate);
}
return;
}
}
}
}
当然下一步是扩展 FOR 循环,以便代码自动通过数组,我只想先解决这个问题。
感谢您的宝贵帮助!
解决方案
推荐阅读
- ionic-framework - 如何使用 Ionic3 与 WhatsApp 共享多个图像?
- java - 带问号的通用列表类型
- c# - 使用 Sendgrid 在 Azure 上发送简单的电子邮件
- python - 在 dict 解包期间内部发生了什么?
- asp.net - Record from Gridview not deleting
- python - 在函数中引发 ValueError
- google-visualization - 格式化 Google 图表 TreeMap 节点
- ibm-cloud-private - ibm-cloud-private 仪表板第一条记录看起来不像 TLS 握手
- java - Spring boot restTemplate 和 Connection 超时
- android - 应用程序在底部留下空白