Exception 在循环中使用getValue时,目标范围的坐标在尺寸之外

Exception 在循环中使用getValue时,目标范围的坐标在尺寸之外,exception,google-apps-script,google-sheets,Exception,Google Apps Script,Google Sheets,我有一个手动运行的google sheet应用程序脚本。执行clearForecast()函数时,我收到以下异常: 例外情况:目标范围的坐标超出范围 表的尺寸。(第30行,文件“代码”) 执行此操作时,没有异常。我已经花了几个小时试图弄清这件事的真相,非常感谢您的帮助。试试: function testFunc() { var locSheets = ["clt","chi","kan","mil","nnj","nva","nyc","sfl","uny"]; for (var i =

我有一个手动运行的google sheet应用程序脚本。执行clearForecast()函数时,我收到以下异常:

例外情况:目标范围的坐标超出范围 表的尺寸。(第30行,文件“代码”)

执行此操作时,没有异常。我已经花了几个小时试图弄清这件事的真相,非常感谢您的帮助。

试试:

function testFunc() {
  var locSheets = ["clt","chi","kan","mil","nnj","nva","nyc","sfl","uny"];
  for (var i = 0; i < locSheets.length; i++) {
    try {
    var numComments = sh.getSheetByName(locSheets[i]).getRange("Y13").getValue();
    }
    catch(e) {
      console.log(locSheets[i] + ', ' + locSheets[i].getMaxRows() + ', ' +  locSheets[i].getMaxColumns());
    }

}
函数testFunc(){ var locSheets=[“clt”、“chi”、“kan”、“mil”、“nnj”、“nva”、“nyc”、“sfl”、“uny”]; 对于(变量i=0;i试试:

函数testFunc(){ var locSheets=[“clt”、“chi”、“kan”、“mil”、“nnj”、“nva”、“nyc”、“sfl”、“uny”]; 对于(变量i=0;i问题: 您正试图将源范围复制到不存在的目标范围

说明: 让我们看看错误是怎么说的:

目标范围的坐标位于图纸尺寸之外

在本例中,目标范围是指要通过将
source
复制到的
destRange
。错误显示,此目标范围不在目标工作表的维度范围内。因此,让我们看看目标范围是如何定义的:

destRange=destSheet.getRange(destSheet.getLastRow()+1,1);
在这里,目标范围定义为最后一行内容(
destSheet.getLastRow()+1
)之后第一行的第一个单元格。在那里出现错误意味着最后一行内容(
destSheet.getLastRow()
)也是工作表中的最后一行(最后一行内容后没有空行)

解决方案: 复制范围之前,请在目标工作表中插入一个空行,以确保工作表末尾有一个空行。例如,您可以在
copyTo
之前使用:

destSheet.insertRowAfter(destSheet.getLastRow());
copyTo(desrange,{contentsOnly:true});
注:
  • 如果
    Y13
    不是正数,则不会发生异常,因为代码从未进入
    If
    块:
    If(numComments>0){…}
问题: 您正试图将源范围复制到不存在的目标范围

说明: 让我们看看错误是怎么说的:

目标范围的坐标位于图纸尺寸之外

在本例中,目标范围是指要通过将
source
复制到的
destRange
。错误显示,此目标范围不在目标工作表的维度范围内。因此,让我们看看目标范围是如何定义的:

destRange=destSheet.getRange(destSheet.getLastRow()+1,1);
在这里,目标范围定义为最后一行内容(
destSheet.getLastRow()+1
)之后第一行的第一个单元格。在那里出现错误意味着最后一行内容(
destSheet.getLastRow()
)也是工作表中的最后一行(最后一行内容后没有空行)

解决方案: 复制范围之前,请在目标工作表中插入一个空行,以确保工作表末尾有一个空行。例如,您可以在
copyTo
之前使用:

destSheet.insertRowAfter(destSheet.getLastRow());
copyTo(desrange,{contentsOnly:true});
注:
  • 如果
    Y13
    不是正数,则不会发生异常,因为代码从未进入
    If
    块:
    If(numComments>0){…}

例外情况是由于我试图写入的范围内的右侧most单元格中存在一个公式


一旦删除,它就如预期的那样工作。

异常是由于我试图写入的范围内的右侧大多数单元格中存在一个公式


一旦被删除,它就工作了。

点击或关闭。我在目的地的右边有一个公式。非常感谢!你的问题得到解决了吗?如果是这样的话,而且答案不是我答案中的答案,你会考虑发布答案吗?太多了!你的问题得到解决了吗?如果是这样的,而且解决办法不是我的答案中的一个,你会考虑发布答案吗?不确定我是否理解一个公式会如何导致这个错误。这个错误基本上意味着你想要复制的目的地范围不完全存在(它的一些行或列不存在)。。您能在此基础上展开吗?当然。目标工作表的结构是填充最左侧的单元格,其中包含脚本中的数据。最右侧的单元格包含将两个单元格中的数据合并到左侧的公式。任何正在更新的行中包含数据的单元格都会导致错误。我希望这是有意义的。不确定我是否理解表单是如何生成的ula可能导致此错误。此错误基本上意味着您要复制到的目标范围不完全存在(其某些行或列不存在)。您可以在此基础上展开吗?当然。目标工作表的结构是填充最左侧的单元格,其中包含脚本中的数据。最右侧的单元格包含将两个单元格中的数据合并到左侧的公式。任何更新行中包含数据的单元格都会导致错误。我希望
function testFunc() {
  num_comments = sh.getSheetByName("clt").getRange("Y13").getValue();
}
function testFunc() {
  var locSheets = ["clt","chi","kan","mil","nnj","nva","nyc","sfl","uny"];
  for (var i = 0; i < locSheets.length; i++) {
    try {
    var numComments = sh.getSheetByName(locSheets[i]).getRange("Y13").getValue();
    }
    catch(e) {
      console.log(locSheets[i] + ', ' + locSheets[i].getMaxRows() + ', ' +  locSheets[i].getMaxColumns());
    }

}