繁体   English   中英

Google Sheets Apps 脚本,从命名范围返回随机项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM