范围的座标不在工作表尺寸范围内(google-script)

时间:2019-04-01 14:02:40

标签: google-apps-script google-sheets

我有一个非常非常奇怪的问题,这似乎与我执行脚本的顺序有关。经过几个小时的调查,我完全无法解释。

我有一个Google表格脚本,该脚本从电子邮件帐户获取电子邮件,并根据给定的规则将其解析为speadsheets。

我有很多方法,它们都利用getEmails等通用类。

每种解析方法都可以很好地工作并提供值得尊重的结果。但是,当我一个接一个地以大方法运行它们时,它会报告错误

"The coordinates of the range are outside the dimensions of the sheet." 

正确执行某些方法后。错误发生在以下行:

var resultArray = sheet.getRange(startrow, column, sheet.getLastRow(), 1).getValues();

并且基于通话

sheet.getLastRow()

(我什至无法在记录器中调用此方法,它适用于说10种方法中的5种,然后突然间我得到了错误)

所有这些方法都以不同的模式解析不同的电子邮件,但这仅适用于新电子邮件。因此,我必须从Google表格第1列中获取旧电子邮件(即通话)的哈希值,以便仅对新的电子邮件哈希值起作用。这个过程有些中断。

令我惊讶的是,我可以执行任何隔离的方法而不会出错。

有什么想法吗?

如前所述,我尝试了隔离,并且尝试更改顺序或仅运行其中两种方法..结果相同。我认为某些变量设置不正确...但是我不知道如何导致此错误。

顺便说一句:在过去的几周中,该代码正常运行(也适用于组合方法)。错误从一周前就开始出现,没有任何代码更改。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

这是引起我该错误的代码示例:

  var priceSheet = ss.getSheetByName(priceSheetName);
  var rangeToSort = priceSheet.getRange(2,1,priceSheet.getLastRow(),priceSheet.getLastColumn());
  rangeToSort.sort(1);
  ss.getSheetByName("my sheet").getRange(startingRow,pasteColumn,pasteHoldings.length,1).setValues(pasteHoldings);

第4行出现了错误The coordinates of the range are outside the dimensions of the sheet(与您的情况类似),但是当我尝试对超出表格最后一行的范围进行排序时,便出现了问题。

  1. 具有内容的最后一行=工作表的最后一行
  2. 排序行起始范围= 2
  3. 行数= priceSheet.getLastRow() <-这是不可能的,因为排序行的起始范围大于1

对我来说,解决方法是根据start row - 1

向下调整排序范围
  var priceSheet = ss.getSheetByName(priceSheetName);
  var rangeToSort = priceSheet.getRange(2,1,priceSheet.getLastRow()-1,priceSheet.getLastColumn());
  rangeToSort.sort(1);
  ss.getSheetByName("my sheet").getRange(startingRow,pasteColumn,pasteHoldings.length,1).setValues(pasteHoldings);

这似乎是Google表格脚本中的一个错误:排序功能,或者至少错误处理正在参照错误的行引发错误。

我的建议是检查您对.getLastRow()的使用情况,看看它是否与大于1的起始行相对应。然后通过.getLastRow()调整starting row - 1

答案 1 :(得分:0)

您的排序范围是否会从第 1 行以外的其他地方开始?

我正在测试这个,我有我的数据要在 A7:N100 上排序。

我发现我可以拥有的最大行是范围中的最后一行减去不在范围内的标题行。例如,我有不在范围内的前 6 行。我的最后一行在第 100 行。所以我的范围只适用于 A7:N94。

为了解决这个问题,我最终在页面底部添加了 6 个空白行,并将排序范围设置为我想要的 (A7:N100),这奏效了。