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

编写谷歌表格转谷歌日历脚本遇Invalid argument: startTime错误

问题分析与解决

错误根源

  1. 数据范围错误:原脚本仅读取了A3:D列,但你需要的事件数据分布在C、E、F、G、H列,导致后续调用data[i][4]等索引时获取到undefined,这是触发Invalid argument: startTime的核心原因。
  2. 数组索引不匹配:即使修正范围,原脚本的索引对应关系也和实际列需求不符。

修正后的脚本

function addEvents() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow();
  var cal = CalendarApp.getCalendarById("c_fe882662e583725f15fd4faa8c8fdf5124f3affe543778ecdcf0838d6eb17f26@group.calendar.google.com");

  // 读取C到H列的数据(对应需求的标题、开始时间等字段)
  var data = ss.getRange("C3:H" + lr).getValues();

  for(var i = 0; i < data.length; i++){ 
    var title = data[i][0];
    var startTime = data[i][2]; // E列对应数组索引2
    var endTime = data[i][3];   // F列对应数组索引3
    var location = data[i][4];  // G列对应数组索引4
    var description = data[i][5]; // H列对应数组索引5

    // 跳过标题或时间为空的行,避免创建无效事件
    if(!title || !startTime || !endTime) continue;

    // 兼容表格中可能的字符串格式时间,转换为Date对象
    if(typeof startTime === 'string') startTime = new Date(startTime);
    if(typeof endTime === 'string') endTime = new Date(endTime);

    cal.createEvent(title, startTime, endTime, {
      location: location,
      description: description
    });
  }
}

额外注意事项

  • 确保表格中E、F列的单元格格式设置为日期时间,避免脚本读取到字符串格式的时间导致错误。
  • 首次运行脚本时会触发权限请求,需授权脚本访问你的谷歌表格和日历。

内容的提问来源于stack exchange,提问作者James Fay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:16:02