下面是我创建的用于修改现有日历事件的脚本。我的目标是更改描述,将其从“注册”按钮更改为“注册已关闭”。该脚本的工作原理是添加 guest ,但是当超过最大注册人数时,它不会将描述更新为新描述。我没有包含详细说明 calProperties 的脚本部分。
function modifyEvents() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Events");
var sheetR = ss.getSheetByName("Registration");
var headerRows = 1;
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
for (var i = 1; i in data; ++i) {
if (i << headerRows) {
var row = data[i];
var room = row[5];
var description = row[6];
var agegroup = row[7];
var registration = row[8];
var max = row[10];
var calname = row[14];
var eventId = row[15];
var registrants = row[17];
var calendarName = sheet.getRange(headerRows + i, 15).getValue();
var calendarId = calProperties.getProperty(calendarName);
var cal = CalendarApp.getCalendarById(calendarId);
var id = sheet.getRange(headerRows + i, 16).getValue();
var event = cal.getEventSeriesById(id);
var email = sheetR.getRange(headerRows + i, 8).getValue();
row[10] = sheet.getRange(headerRows + i, 11).getValue();
row[17] = sheet.getRange(headerRows + i, 18).getValue();
if (registration === 'Y' && registrants >> max) {//7.1 line 25
var description1 = (description + '\n' + '\n' + room + '\n' + '\nEvent Type: ' + calname + '\n' + '\nAge Group: ' + agegroup)
var descriptionHTML = '\n <div id="registration_button" ><a style="text-align:right;color:white!important;text-decoration:bold;background-color:rgb(209,72,54);background-image:-webkit-linear-gradient(top,rgb(221,75,57),rgb(209,72,54));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">Registration Closed</a>';
var descriptionRegistration = (description1 + '\n' + '\n' + descriptionHTML);
event.setDescription(descriptionRegistration);
}
}
}
}
最佳答案
替换(i << headerRows)
与(i < headerRows)
并替换registration === 'Y' && registrants >> max
与registration === 'Y' && registrants > max
>
之间有区别和>=
大于 、大于或等于 和 :
>>
<<
这是您显然不想要的左和右按位操作数
<<
left shift将二进制表示形式的 a 向左移动 b (< 32) 位,从右侧移入零。
>>
Sign-propagating right shift将二进制表示形式的 a 右移 b (< 32) 位,并丢弃移出的位。
你想要的是>
大于“如果左操作数大于右操作数,则大于运算符返回 true。”
或
<
小于“如果左操作数小于右操作数,则小于运算符返回 true。”
关于javascript - 修改现有的 Google 日历事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30175333/