You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:01:20