我有一个谷歌文档脚本,它执行我创建的谷歌脚本库中的函数(调用 - 调用 Lib1.lib1function() )。我想知道是否在 google doc 脚本中的 IDE 调试器中设置断点,在该脚本中调用库脚本中的函数并让调试器公开库函数的执行。 IE。继续跟踪被调用库中的执行情况。或者是我在脚本库中唯一的调试技术 Logger.log() 并将信息写入控制台?
我能想到的唯一其他调试解决方案是将实际的库脚本 (Lib1) 复制到新的 Google Doc 脚本文件并在那里测试和执行代码。创建和测试代码后,我会将其复制回库脚本以供其他文档使用。
不幸的是,您无法调试另一个项目上的库。调试库的最佳方法是在库脚本中创建另一个函数,该函数将调用库方法或创建单元测试。
这里我使用 QUnit 为我的库方法创建单元测试
sumArray
。
QUnit.helpers(this);
function sumArray(arr) {
var sum = 0;
for ( var i = 0; i < arr.length; i++ ){
if(isNaN(arr[i])){
return "Non-numerical data detected";
}else{
sum = sum + arr[i];
}
}
return sum;
}
function testFunction(){
testingSumArray();
}
function testingSumArray(){
QUnit.test( "sumArray testing", function() {
expect(2);
equal( sumArray([1,2,3,4,5]), 15 , "Test for Array [1,2,3,4,5], Output is 15" );
equal( sumArray([1,'a','b','c',4]), "Non-numerical data detected", "Test for Array [1,'a','b','c',4]: Output is Non-numerical data detected" );
});
}
function doGet( e ) {
QUnit.urlParams( e.parameter );
QUnit.config({ title: "sumArray Unit tests" });
QUnit.load( testFunction );
return QUnit.getHtml();
};
输出:
要了解如何在 Apps 脚本中使用 QUnit,您可以查看文档这里。
如果有帮助,我正在对库中的谷歌工作表使用以下解决方法,其中大多数代码(如果不是全部)都与活动电子表格有关。为了直接在库代码中进行调试,我总是使用 getActiveSpreadsheet() 的包装函数来获取活动工作表,因此如果它为 null,我会使用其 ID 返回默认电子表格。
const DEFAULT_SPREADSHEET_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" //update with your spreadsheet ID
function getActiveSsheet(){
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
if (null == spreadSheet){
spreadSheet = SpreadsheetApp.openById(DEFAULT_SPREADSHEET_ID);
}
return spreadSheet
}