我有一个谷歌脚本,将事件日期更改为一年中的某一天,因此2015年8月26日是237,并且还将今天的日期更改为一年中的某一天。然后,它将一年中的事件日期日期与当年的日期日期进行比较。如果事件日期整数小于今天的日期整数,则它会将Google日历中的事件描述更改为“事件已关闭”。问题是它只对电子表格中的第一个事件执行此操作。它不会遍历所有事件并更改今天之前的所有事件描述。
function compareDates(){
var sheet = SpreadsheetApp.getActive().getSheetByName("Events");
var data = sheet.getDataRange().getValues();
var headerRow = 1;
var i = 1;
for (i = 1; i < data.length; i += 1) {
var row = data[i];
var room = row[5];
var description = row[6];
var agegroup = row[7];
var registration = row[8];
var calname = row[14];
var registrants = row[17];
var id = sheet.getRange(headerRow + 1, 16).getValues();
var event = CalendarApp.getEventSeriesById(id);
var description1 = (description + '\n' + '\n<b>Room:</b> ' + room + '\n' + '\n<b>Event Type:</b> ' + calname + '\n' + '\n<b>Age Group:</b> ' + agegroup);
var today = parseInt(Utilities.formatDate(new Date(sheet.getRange("U2").getValues()), "EST", "D"));
var eventDate = parseInt(Utilities.formatDate(new Date(row[0]), "EST", "D"));
var testED = sheet.getRange(headerRow + i, 22).setValue(eventDate);//To see if var Today works.
var testT = sheet.getRange(headerRow + i, 23).setValue(today);//To see if var eventDate works.
if (today > eventDate && registration === 'Y') {
var descriptionHTMLEC = '\n <div id="registration_button" ><a style="text-align:right;color:white!important;text-decoration:bold;background-color:rgb(121,183,138);background-image:-webkit-linear-gradient(top,rgb(221,75,57),rgb(121,183,138nnn ));color:#ffffff;border:1px solid rgba(0,0,0,0);border-radius:2px;display:inline-block;font-size:12px;font-weight:bold;height:27px;line-height:27px;padding:0px 20px 0px 20px;text-align:center;text-transform:uppercase;white-space:nowrap;text-decoration:none;color:white" target="_blank">Event Closed</a>';
var descriptionRegistrationEC = (description1 + '\n' + '\n' + descriptionHTMLEC);
event.setDescription(descriptionRegistrationEC);
}
}
}
答案 0 :(得分:0)
您似乎在每次迭代时修改相同的事件。声明:
var id = sheet.getRange(headerRow + 1, 16).getValues();
每次都会为id
分配相同的值。不应该是:
var id = sheet.getRange(headerRow + i, 16).getValues();
对于更易读的代码,您可以只使用日期对象上的getTime()
函数。
var today = new Date(sheet.getRange("C2").getValues()).getTime();
var eventDate = new Date(row[0]).getTime();