开发 Google Apps 脚本(在我的例子中特别是表格)时,您可以使用“调试”按钮单步执行代码并检查变量,也可以使用记录器输出调试信息。
但是,我不知道的是,当通过工作表本身触发功能时,是否有任何方法可以执行这些操作。 例如,从触发函数的自定义菜单项或 onEdit() 触发器。
这使得调试问题变得非常困难,因为据我所知,GAS 只是默默地失败了。 浏览器 JS 控制台中也没有出现任何有用的内容。
@Lorena Gomez 的答案是正确的,但错过了解释一个关键细节——“Apps 脚本执行日志”到底在哪里?如果您像我一样反复查看标有“执行日志”的位置,那么您找错了地方。
将鼠标移至浏览器窗口的左边缘。有一列未标记的图标。将鼠标悬停在带有三角形的汉堡包上。当您将鼠标悬停时,它会展开,您可以看到它显示“执行”。单击它。您将看到函数运行的列表。单击其中一个将其展开。
我将这个答案写为社区维基,因为问题是从评论部分解决的,以便为问题提供正确的答复。
正如评论中提到的,您可以在脚本编辑器中使用Apps脚本执行日志。您可以使用
Logger
或 console
日志记录类。
Apps 脚本
Logger
和 console
之间的区别在于 Logger.log
需要为每个参数使用 %s
占位符,而 console
以通常的 JavaScript 方式工作:
Logger.log('Values', 1, 2, 3); // will only log "Values"
console.log('Values', 1, 2, 3); // will log "Values 1 2 3"
此外,要测试触发功能并检查是否有任何错误,您可以执行以下操作:
onEdit
触发器,因此请编辑工作表中的单元格。Failed
和 Time out
进行过滤。 到目前为止,我无法从自定义菜单项触发的函数中获取任何记录器输出。因此,我以一种更简单的方式完成了它 - 创建另一个函数,该函数将预先选择触发函数的工作表和单元格。这还允许您进行逐步调试、设置断点以及检查调试器中的变量。这是复制粘贴的代码片段:
function generateVacationsDebug() {
SpreadsheetApp.getActiveSpreadsheet().setActiveSheet(
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Vacations")
);
SpreadsheetApp.getActiveSheet().setActiveRange(
SpreadsheetApp.getActiveSheet().getRange("C305")
);
generateVacations();
};