Google Sheets脚本无法加载运行 无Logger日志输出问题求助
Google Sheets Apps Script 无响应排查方案
连第一个自定义日志内容都没有输出,说明代码在执行到Logger.log("The problem isnt here")之前就抛出异常中断了,按以下步骤排查即可:
- 补全代码语法缺失
你提供的代码末尾缺少函数闭合的},语法解析直接失败无法运行,首先补上该符号。 - 验证目标工作表是否存在
getSheetByName()如果找不到对应名称的工作表会返回null,后续调用null的属性方法会直接报错。首先确认你的表格内存在名称格式为ddMM、对应两天前日期的工作表,同时在代码中添加非空判断避免空指针报错,修正后的可运行参考代码如下:
function deletesheet(){ var MILLIS_PER_DAY = 1000 * 60 * 60 * 24; var date0 = new Date(new Date().getTime() - 2 * MILLIS_PER_DAY) // 自动适配表格时区,避免硬编码GMT+1不匹配的问题 var tz = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone() var dateM = Utilities.formatDate(date0, tz, "MM"); var dateD = Utilities.formatDate(date0, tz, "dd"); var date2 = dateD+dateM; var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getSheetByName(String(date2)) // 加非空判断,找不到表直接抛出明确报错 if (!sheet) { throw new Error(`未找到名称为${date2}的工作表`) } Logger.log("The problem isnt here") if(sheet.getRange(sheet.getMaxRows(),sheet.getMaxColumns()).isChecked()){ Logger.log("True") }else{ Logger.log("FAlsse") } }
- 核对时区配置
硬编码GMT+1时区如果和你的Google Sheets表格设置时区不一致,会导致格式化出来的日期和你预期的工作表名不匹配,找不到对应工作表。建议直接用上面代码里的getSpreadsheetTimeZone()方法自动适配,不需要手动修改时区参数。 - 验证脚本运行权限
手动在Apps Script编辑器点击运行按钮触发一次脚本,确认你已经授予了脚本对应表格的编辑权限,没有权限的话脚本会直接中断无输出,编辑器的执行日志也会弹出权限错误提示。 - 检查触发器配置
如果是用自动触发器运行无响应,确认触发器的执行身份选择的是你自己的账号,且触发事件、触发条件配置正确,触发器的执行日志里也能看到具体的报错信息。
内容的提问来源于stack exchange,提问作者Mr. Raptor
相关产品推荐
相关产品推荐

