gpt4 book ai didi

google-apps-script - getRange 使用脚本命名范围谷歌电子表格

转载 作者:行者123 更新时间:2023-12-02 20:12:53 26 4
gpt4 key购买 nike

可以使用 getRange 来获得命名范围而不是区域吗?
当我似乎这样做时,它说参数必须是一个范围。例如,

而不是:

     getRange("A4:E7");

A4:E7 区域已被制作为sheet1 中名为“Names”的命名范围。

您可以使用:

var tableRange = SpreadsheetApp.getActiveSpreadsheet();.getRangeByName("Names");
getRange(tableRange);

或者还有其他办法吗?完整代码为:

function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var editedCell = ss.getActiveCell();

var columnToSortBy = 1;
var tableRange = ss.getRangeByName("Names");

if(editedCell.getColumn() == columnToSortBy){
var range = ss.getRange(tableRange);
range.sort( { column : columnToSortBy } );
}
}

最佳答案

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getrangebynamename

自定义函数返回命名范围的 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() 返回绝对列,而不是区域中单元格的位置。您必须添加代码来对此进行调整。

关于google-apps-script - getRange 使用脚本命名范围谷歌电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12342164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com