性能问题:在2个电子表格上测试了1个简单脚本,执行时间不同(从不到1秒到7秒)

时间:2018-01-04 19:27:31

标签: performance time google-apps-script google-sheets

我在2个不同的电子表格上测试了一个简单的脚本,第一个电子表格的执行时间不到1秒,第二个电子表格的执行时间不到7秒(即使它是相同的代码)。以下是2个电子表格中使用的代码,非常基本(只需在表格中检索一个值):

function testScript() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MY SHEET");
  var range = sheet.getRange("A1");
  var value = range.getValues();

}

我使用以下代码从菜单调用了这个函数:

function onOpen() {

  var ui = SpreadsheetApp.getUi();

  ui.createMenu('MY MENU')
      .addItem('TEST', 'testScript')
      .addToUi();

}

我在脚本文件中没有其他内容。

关于电子表格:

  • 第一个(执行时间不到1秒)由 一张名为" MY SHEET"的空白表。
  • 第二个(超过7秒执行)由9张纸组成,其中包含大量数据和公式+一张名为" MY SHEET" (以测试简单的代码)。

为什么2个电子表格的执行时间如此不同?他们之间的代码完全相同,而且我只处理空白的纸张" MY SHEET"。

非常感谢! :)

1 个答案:

答案 0 :(得分:0)

我不确定能为此给出准确的答案,但关键因素是,当您拨打内置的Google服务时,Apps脚本会在幕后进行远程API调用,Google&#39 ;基础设施分布且复杂。

您对SpreadsheetApp功能的调用 - - getActiveSpreadsheet(),getSheetByName(),getRange(),getValues()都向Google服务发出网络请求,这需要时间并且受到各种条件的影响,就像任何其他网络请求一样。

每个完成这些操作所花费的时间差别很大,根据我的经验,他们从不到一秒钟到每秒约2秒钟,这从执行到执行各不相同。

至于为什么你的两份文件之间如此不同,很难说。可能会有一些关于表格本身的内容有影响,但我希望这是非常小的。

它更可能是基础设施本身的一个怪癖,而且它很可能是一个临时条件,导致一个文档的执行速度比另一个文档慢。

例如,这两个文件可以存储在完全不同的数据中心的完全不同的地方,并且一个站点的延迟量可能比另一个站点的延迟量多。对于像Google Drive这样的复杂分布式架构,还有许多其他方案可以解释差异。脚本本身是单独的文件,这些文件可以存储在工作表等不同的位置。