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

为何Google Apps Script会在代码限定的工作日外执行?

问题原因与修复方案

核心问题分析

你的脚本看似包含工作日判断逻辑,但周末仍会执行并更新数据,主要有以下两个关键原因:

1. 时区不匹配(最常见诱因)

脚本里new Date()使用的是脚本项目默认时区,但如果你的时间驱动触发器设置了不同时区,就会导致星期判断完全错误。举个例子:

  • 若你所在时区是北京时间(UTC+8),周六0点时,UTC时区仍处于周五16点,要是触发器按UTC时区触发,脚本会误判当天为周五,进而执行数据复制操作。

2. 脚本语法笔误(若实际运行版本无此问题可忽略)

代码中values. Length存在多余空格,正确写法应为values.length。这个错误会直接导致脚本抛出TypeError,理论上无法完成复制,但如果实际运行的脚本没有这个笔误,该点就不是周末执行的原因。


修复步骤

步骤1:统一时区设置

  1. 打开脚本编辑器,点击右上角「设置」图标 → 进入「项目设置」
  2. 在「时区」选项中选择你实际需要的时区(比如「亚洲/上海」)
  3. 进入触发器管理页面,确保触发器的时区与项目时区完全一致

步骤2:强制指定时区判断星期(可选,更可靠)

如果想彻底规避时区问题,可以手动指定目标时区来计算星期几,替换原有的日期判断逻辑:

// 替换原有的日期判断代码段
var today = new Date();
// 指定目标时区,例如"Asia/Shanghai"
var dayOfWeekText = new Intl.DateTimeFormat('zh-CN', { weekday: 'numeric', timeZone: 'Asia/Shanghai' }).format(today);
// 转换为数字:周一=1,周日=7
var dayNum = { '一':1, '二':2, '三':3, '四':4, '五':5, '六':6, '日':7 }[dayOfWeekText];

// 判断是否为工作日
if (dayNum >=1 && dayNum <=5) {
  // 后续数据复制逻辑...
}

步骤3:修复语法笔误

将代码中的values. Length修改为values.length,避免脚本执行时抛出错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:42:46