Google apps script 使用脚本使用命名范围的getRange google电子表格

Google apps script 使用脚本使用命名范围的getRange google电子表格,google-apps-script,google-sheets,named-ranges,Google Apps Script,Google Sheets,Named Ranges,getRange是否可以用于指定范围而不是区域? 当我这样做的时候,它说论点必须是一个范围。 比如说, 而不是: getRange(“A4:E7”); A4:E7的区域已被制成一个命名范围,称为表1中的“名称” 您是否可以使用: var tableRange=SpreadsheetApp.getActiveSpreadsheet();。getRangeByName(“名称”); getRange(tableRange); 或者还有其他的方法吗。完整代码为: 函数onEdit(事件){ var

getRange
是否可以用于指定范围而不是区域?
当我这样做的时候,它说论点必须是一个范围。 比如说,

而不是:

getRange(“A4:E7”);
A4:E7
的区域已被制成一个命名范围,称为表1中的“名称”

您是否可以使用:

var tableRange=SpreadsheetApp.getActiveSpreadsheet();。getRangeByName(“名称”);
getRange(tableRange);
或者还有其他的方法吗。完整代码为:

函数onEdit(事件){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var editedCell=ss.getActiveCell();
var columnToSortBy=1;
var tableRange=ss.getRangeByName(“名称”);
如果(editedCell.getColumn()==ColumntToSortby){
变量范围=ss.getRange(tableRange);
排序({column:columnToSortBy});
}
}

返回命名范围A1地址的自定义函数:

function myGetRangeByName(n) {  // just a wrapper
  return SpreadsheetApp.getActiveSpreadsheet().getRangeByName(n).getA1Notation();
}
然后,在电子表格上的单元格中:

=myGetRangeByName("Names")
这会将定义为的任何“名称”放入单元格中。当您重新定义“名称”时,它不会更新,因为GAS具有攻击性的缓存。但是,您可以强制GAS在每个计算表上更新它

=myGetRangeByName("Names",now())
javascript将忽略未使用的参数

下面的代码符合我认为您的意图。编辑图纸的第一列时,它会根据该列对范围进行排序

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var editedCell = ss.getActiveCell();
  var columnToSortBy = 1;
  var tableRange = ss.getRangeByName("Names");
  if ( editedCell.getColumn() == columnToSortBy ) {
    tableRange.sort(columnToSortBy);
  }
}

如果将列表从列A中移出,这将不起作用,因为
getColumn()
返回的是绝对列,而不是区域中单元格的位置。您必须添加代码来进行调整。

仍然停留在这一点上-我不确定谷歌脚本为什么不允许使用定义的名称。这不是对您问题的答案,只是一个建议:您不需要
getActiveCell()
。编辑事件将编辑的范围传递给脚本,这样您就可以使用
event.range.getColumn()
。这是怎么回事
now()
?我把它放在一张纸上,它出错了。