![](/img/trans.png)
[英]apps script and google sheets, proper way to change range of named range?
[英]Google Sheets Apps Script, return random item from named range
我正在尝试创建一个自定义 function ,我可以提供一个名称范围作为输入,并让它 output 一个来自名称范围的随机项目。 我有多个命名范围,因此拥有一个可以用于所有范围的 function 会很方便。 这就是我要替换的内容=INDEX(named_range,RANDBETWEEN(1,COUNTA(named_range)),1)
这是我尝试过的,但它不起作用:
function tfunction(n) {
var randomstuffs = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(n);
var randomstuff = randomstuffs[Math.floor(Math.random()*randomstuffs.length)];
Logger.log(randomstuff);
}
提前致谢
.getRangeByName()
方法返回对范围的引用,而不是范围中的值。 您需要向其中添加.getValues()
:
var randomstuffs = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(n).getValues();
还要记住.getValues()
方法返回一个二维值数组,按行索引,然后按列索引。 因此,您的var randomstuff
声明将需要更改以解决此问题,具体取决于您的范围有多少行和列。
你可以试试这个编辑过的脚本:
function tfunction(n) {
//randomstuffs will only get all cell data that are not empty from a named range
var randomstuffs = [].concat.apply([], SpreadsheetApp.getActiveSpreadsheet().getRangeByName(n).getValues()).filter(String);
var randomstuff = randomstuffs[Math.floor(Math.random()*randomstuffs.length)];
return randomstuff;
}
样本结果
在 A 列上创建了一个名为 range
TestRange
的样本,其中包含 21 个数据单元格,然后尝试自定义 function=tfunction("TestRange")
,它返回一个随机单元格值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.