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

Google Calendar脚本日期异常:首尾正确中间事件提前一天

Google Calendar全天事件日期异常问题排查与解决

问题描述

使用脚本从Google Sheet读取数据创建Google Calendar全天事件时出现日期异常:首个事件日期1/4/23添加正确,中间的1/8/23、2/5/23、6/18/23均被提前至前一天,最后一个10/15/23日期添加正确。

数据异常对应示例

1/4/23  ->  1/4/23 put in goog cal correctly 
1/8/23 ->  1/7/23  - one day off
2/5/23 -> 2/4/23 - one day off
6/18/23 -> 6/17/23 - one day off
10/15/23 -> 10/15/23 - correct

所用脚本代码

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

  var data = ss.getRange("A1:C" + lr).getValues();

  for(var i = 0; i<data.length;i++){
    cal.createAllDayEvent(data[i][0], new Date(data[i][1]), {description:'PRO: ' + data[i][2]});
  }
}

// Google Sheet包含三列:title(标题)、date(日期)、description(描述)

问题原因与解决方法

核心原因

时区不匹配是主要诱因:Google Sheets与Google Calendar的时区设置不一致,或者脚本创建Date对象时未处理时区偏移,导致部分日期转换为UTC时跨天,最终显示为前一天。

解决方案

方案1:统一时区设置

  • Google Sheet端:点击「文件」→「设置」,将时区调整为与Google Calendar完全一致(如均设为「北京时间」「美国东部时间」等)。
  • Google Calendar端:点击右上角设置图标→「设置」,找到「时区」选项,确认与Sheet时区匹配。

方案2:脚本中手动处理时区偏移

若无法统一时区,可通过Utilities.formatDate将Sheet日期转换为Calendar时区的午夜时间,避免跨天问题:

function addEvents(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow();
  var cal = CalendarApp.getCalendarById("@group.calendar.google.com");
  // 获取目标日历的时区
  var calTimeZone = cal.getTimeZone();

  var data = ss.getRange("A1:C" + lr).getValues();

  for(var i = 0; i<data.length;i++){
    // 将Sheet日期格式化为日历时区的标准日期字符串,再转为Date对象
    var eventDateStr = Utilities.formatDate(new Date(data[i][1]), calTimeZone, "yyyy-MM-dd");
    var eventDate = new Date(eventDateStr);
    cal.createAllDayEvent(data[i][0], eventDate, {description:'PRO: ' + data[i][2]});
  }
}

额外检查项

确认Google Sheet中「date」列的格式为日期格式,而非文本格式。若为文本,new Date()解析时可能出现异常,可选中列后点击「格式」→「数字」→「日期」调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:05:23