如何调试或查看从工作表触发的 Google App 脚本中的日志

问题描述 投票:0回答:3

开发 Google Apps 脚本(在我的例子中特别是表格)时,您可以使用“调试”按钮单步执行代码并检查变量,也可以使用记录器输出调试信息。

但是,我不知道的是,当通过工作表本身触发功能时,是否有任何方法可以执行这些操作。 例如,从触发函数的自定义菜单项或 onEdit() 触发器。

这使得调试问题变得非常困难,因为据我所知,GAS 只是默默地失败了。 浏览器 JS 控制台中也没有出现任何有用的内容。

google-sheets google-apps-script debugging triggers
3个回答
3
投票

@Lorena Gomez 的答案是正确的,但错过了解释一个关键细节——“Apps 脚本执行日志”到底在哪里?如果您像我一样反复查看标有“执行日志”的位置,那么您找错了地方。

将鼠标移至浏览器窗口的左边缘。有一列未标记的图标。将鼠标悬停在带有三角形的汉堡包上。当您将鼠标悬停时,它会展开,您可以看到它显示“执行”。单击它。您将看到函数运行的列表。单击其中一个将其展开。


1
投票

我将这个答案写为社区维基,因为问题是从评论部分解决的,以便为问题提供正确的答复。

正如评论中提到的,您可以在脚本编辑器中使用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"

此外,要测试触发功能并检查是否有任何错误,您可以执行以下操作:

  1. 由于您使用的是
    onEdit
    触发器,因此请编辑工作表中的单元格。
  2. 转到 Apps 脚本项目。
  3. 如果出现错误,您可以在“执行”部分查看日志,您将找到一个执行列表,您可以按
    Failed
    Time out
    进行过滤。 enter image description here

参考:

Apps 日志记录机制


1
投票

到目前为止,我无法从自定义菜单项触发的函数中获取任何记录器输出。因此,我以一种更简单的方式完成了它 - 创建另一个函数,该函数将预先选择触发函数的工作表和单元格。这还允许您进行逐步调试、设置断点以及检查调试器中的变量。这是复制粘贴的代码片段:

function generateVacationsDebug() {
  SpreadsheetApp.getActiveSpreadsheet().setActiveSheet(
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Vacations")
  );
  SpreadsheetApp.getActiveSheet().setActiveRange(
    SpreadsheetApp.getActiveSheet().getRange("C305")
  );

  generateVacations();
};    
© www.soinside.com 2019 - 2024. All rights reserved.