javascript - 修改现有的 Google 日历事件

标签 javascript google-sheets google-calendar-api

下面是我创建的用于修改现有日历事件的脚本。我的目标是更改描述,将其从“注册”按钮更改为“注册已关闭”。该脚本的工作原理是添加 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/

相关文章:

javascript - 查找行数组中最后一列的最后一个值

java - Google Sheets API 的表格是否自动更新

javascript - 使用 javascript google calendar api v3 获取某一天的事件

Java 看不到日历 API

javascript - 我的 GAS 脚本无法创建没有任何错误的事件

javascript - Jenkins 错误 - 在 <URL> 中阻止脚本执行。因为文档的框架是沙箱化的并且没有设置 'allow-scripts' 权限

javascript - AngularJS:对小时和分钟数组进行排序

JavaScript 数组读取

python-2.7 - gspread 输入前面有单引号

google-sheets - 如何在Google Spreadsheets中减去两组值?