Google脚本批量创建日历事件异常:重复生成首行事件排查
问题排查:Google脚本重复生成首行日历事件
问题现象
编写的Google脚本用于为电子表格中勾选的行创建对应日历事件,但勾选3行时会重复生成3个首行的事件。控制台日志能识别3条不同数据,但createEvent仅读取首行数据,未遍历后续行。
核心问题
在approveData.forEach(r => {...})循环中,所有数据取值都固定使用approveData[0](数组第一个元素),而非循环当前迭代的r变量,导致每次循环都只读取首行数据。
修正后的代码
function createThickEvents() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("formhelper"); var data = sheet.getRange("A1").getDataRegion().getValues() var approveData = data.filter(r => r[10] === true && r[11] === "") var cal1 = "calendarID"; var cal2 = "calendarID"; var cal3 = "calendarID"; var cal4 = "calendarID"; var calendars = { Name1: CalendarApp.getCalendarById(cal1), Name2: CalendarApp.getCalendarById(cal2), Name3: CalendarApp.getCalendarById(cal3), Name4: CalendarApp.getCalendarById(cal4) } approveData.forEach(r => { // 改用当前循环的行变量r获取数据 var emailAddress = r[1]; var title = r[2]; var tstart = new Date(r[3]); var tstop = new Date(r[4]); var usingDays = r[6]; var remainingDays = r[9]; var desc = r[5]; var calComp = r[8]; var newEventComp = calendars[calComp].createEvent(title, tstart, tstop, {description:desc}) console.log(r) // 打印当前处理的行数据,方便调试 }) }
关键修改点
- 把循环内所有
approveData[0][n]替换为r[n],使用当前迭代的行数据而非固定首行 - 调试日志改为打印
r,便于查看当前处理的行内容
内容的提问来源于stack exchange,提问作者Nikola Spasovski
相关产品推荐
相关产品推荐

