Google Apps Script无法定位工作表特定单元格的问题排查与解决
错误原因
- 最核心的问题是调用方法的对象类型错误:你在写入上月工作表单元格时,使用了字符串类型的
prevSheetName调用getRange()方法,这个变量只存了工作表名称的文本内容,不是工作表实例对象,调用方法会直接报错,自然没法写入数据。你前面已经通过ss.getSheetByName(prevSheetName)拿到了正确的工作表实例targetS,直接用这个对象调用getRange()就行。 - 原有逻辑冗余:你把
targetDate.includes("/16")的判断放在了遍历目标工作表行的for循环里,每遍历一行就重复执行一次赋值操作,完全没必要,还会拖慢脚本运行速度。
补充说明
你后续补充的修复代码已经解决了核心的对象调用错误,把判断条件调整为同时匹配行日期和目标日期的16日场景,且使用正确的工作表实例调用方法,所以功能可以正常运行。
如果想要从根源解决日期偏移1天的问题,可以统一脚本和表格的时区:出现日期偏移本质是Utilities.formatDate的时区参数和表格默认时区不一致导致的,把时区替换为表格本身的时区即可:
const timeZone = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(); // 后续所有formatDate都用这个timeZone变量代替固定写死的"JST" var targetDate = Utilities.formatDate(atvc.offset(1, -5).getValue(), timeZone, "yyyy/MM/dd");
内容的提问来源于stack exchange,提问作者GEO
相关产品推荐
相关产品推荐

