【问题标题】:"The coordinates of the range are outside the dimensions of the sheet"“范围的坐标在工作表的尺寸之外”
【发布时间】:2022-01-31 09:08:00
【问题描述】:

我正在尝试对从第 3 行 (C3) 的第一个单元格开始到最后一行和第七列的范围进行排序。

无论我尝试什么,我都会收到错误 “范围的坐标超出了工作表的尺寸”

知道我哪里出错了吗?我在下面包含了我的代码。

谢谢!

function onEdit(event){
  
  Utilities.sleep(900);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];  
  var range = sheet.getRange(3,1,sheet.getLastRow(),7);
  range.sort (7) 
}

【问题讨论】:

  • 我必须为我糟糕的英语水平道歉。不幸的是,我无法理解from the first cell of the 3rd row (C3) and goes until the last row and the seventh column 和你的var range = sheet.getRange(3,1,sheet.getLastRow(),7); 脚本。在您的脚本中,使用了A3:G。所以我无法理解from the first cell of the 3rd row (C3)。我可以问你目标的细节吗?

标签: google-apps-script google-sheets


【解决方案1】:

尝试更改此行...

var range = sheet.getRange(3,1,sheet.getLastRow(),7);

到这个...

var range = sheet.getRange(3,1,sheet.getLastRow()-2,7);

当您读取当前行时,您要求从第 3 行开始,然后提取工作表中的 整个 行数。例如,如果您的工作表只有 10 行,则您要求从第 3 行开始并从该点开始计算 10 行,这是不可能的。

您必须为超出起始范围的行数(在本例中为 2)打折。

【讨论】:

    【解决方案2】:

    试试这个方法:

    function onEdit(e){
      const sh = e.range.getSheet();
      sh.getRange(3,1,sh.getLastRow() - 2,7).sort({column:7,ascending:true})
    }
    

    或者这样:

    function onEdit(e){
      const sh = e.range.getSheet();
      sh.getRange("A3:G" + String(sh.getLastRow())).sort({column:7,ascending:true})
    }
    

    注意:此功能在所有工作表的所有编辑上运行。您应该考虑限制对不需要的工作表的访问,因为不这样做会影响电子表格的性能。

    我真的想不出在 onEdit 函数中使用睡眠的任何理由。

    【讨论】:

    • 我使用 sleep 只是为了确保他们可以在该行立即排序之前稍微编辑一下。
    【解决方案3】:

    出现问题是因为您的工作表的行数少于sheet.getLastRow() 返回的值加上范围起始行引起的偏移量,在本例中为 2。

    不需要更改代码的一种解决方案是在工作表中添加更多行,但最合适的解决方案(在前面的答案中已经提到)是将sheet.getLastRow() 替换为sheet.getLastRow() - 2

    相关

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多