【问题标题】:Stepping through code in Google Apps Script (equivalent VBA-GAS )单步执行 Google Apps 脚本中的代码(等效 VBA-GAS)
【发布时间】:2013-06-23 23:10:30
【问题描述】:

在编写我的 VBA 宏时,我经常使用“F8”来逐行调试宏。 Google Apps 脚本中是否有类似的功能?

【问题讨论】:

    标签: vba debugging google-apps-script google-sheets google-docs


    【解决方案1】:

    类似,但不一样。

    Google Apps 脚本是在称为 Script Editor 的专用 IDE1 中开发的,它支持单步执行和断点等。

    有关使用 IDE 进行调试的快速介绍,请参阅this video。在线文档的Troubleshooting 部分包含对基础知识的快速概述。

    带参数的调试函数

    在 IDE 中,您可以选择脚本中的任何函数来执行,然后选择“运行”或“调试”图标启动。不幸的是,没有办法以这种方式将参数传递给函数,所以这里有一些方法可以解决这个问题。

    1. 设置默认值。 javascript中有numerous ways to define defaults,这是调试器使用其中最简单的函数操作函数的图片。来自this answer 的函数toText() 接受一个数字作为参数,因此在本例中,我们将默认值强制为21。图为调试器在第 40 行暂停;如果我们继续单步执行我们期望得到的结果 s == 'Twenty-one' 的函数。

    2. 编写一个测试函数。这是比设置默认值更好的方法,因为它允许您编写多个测试用例,并且可以避免调试代码污染目标函数。例如,this answer 中提供了目标函数flipFlopAndFly() 及其测试函数test_flipFlopAndFly()。测试功能访问电子表格,为测试目标提供适当的数据,因此我们可以轻松修改数据以进行不同的测试。 另请注意,此功能包括错误检查,因此不适合通过强制使用默认值进行测试。

    这些基本模式有很多变体,因此请根据自己的情况随意调整它们。这将有助于您的调试能力在编写时考虑您将如何逐步执行代码:

    • 每个重要的对象和值是否都存储在var中,这样你就可以看到了吗?
    • 您的函数结果(返回值)是否在 var 中?

    自定义函数

    在开发或调试将从电子表格调用的自定义函数时,请记住您不能“跳转”到 IDE。如果需要单步执行脚本,则需要完全在 IDE 中工作以观察代码的执行情况。您可以使用上述技术来调试自定义函数。


    1Integrated Development Environment

    【讨论】:

    • 我发现有些函数和断点很难到达,尤其是当函数作为参数传递时(Array.map 等)如果我需要检查一些东西,那么我会强制出错。 o.o;被策略性插入,然后我按下bug按钮运行我的测试函数。
    • @fooby - 我需要看一个例子来理解“战略位置”,以及为什么不能使用断点。我也使用其他技术(例如 GsUnit),但由于这里多次询问基本的“如何”,我认为从基础开始是值得的。
    • 我猜,在 ES6 时代,最合适的方式就是:function toText(num=21) { ... }
    猜你喜欢
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2017-11-05
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多