google 脚本您可以使用 IDE 调试器来单步调试调用的 google 脚本库吗

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

我有一个谷歌文档脚本,它执行我创建的谷歌脚本库中的函数(调用 - 调用 Lib1.lib1function() )。我想知道是否在 google doc 脚本中的 IDE 调试器中设置断点,在该脚本中调用库脚本中的函数并让调试器公开库函数的执行。 IE。继续跟踪被调用库中的执行情况。或者是我在脚本库中唯一的调试技术 Logger.log() 并将信息写入控制台?

我能想到的唯一其他调试解决方案是将实际的库脚本 (Lib1) 复制到新的 Google Doc 脚本文件并在那里测试和执行代码。创建和测试代码后,我会将其复制回库脚本以供其他文档使用。

debugging google-apps-script shared-libraries
2个回答
1
投票

不幸的是,您无法调试另一个项目上的库。调试库的最佳方法是在库脚本中创建另一个函数,该函数将调用库方法或创建单元测试。

这里我使用 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,您可以查看文档这里


0
投票

如果有帮助,我正在对库中的谷歌工作表使用以下解决方法,其中大多数代码(如果不是全部)都与活动电子表格有关。为了直接在库代码中进行调试,我总是使用 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
}
© www.soinside.com 2019 - 2024. All rights reserved.