我正在创建一个电子表格,当我按下按钮时,该电子表格可以自动从特定列中选择随机单元格数据。但是,我无法弄清楚该脚本。
多亏了一些朋友,我尝试了一些涉及使用附加组件的变体,但理想情况下,我不想使用任何类似的东西,因为如果人们想要在没有附加组件的情况下进行复制,则它必须可用。
我想要做的是单击一个特定的按钮,然后相邻的单元格显示列表中给定数据集中的随机值。
我有两张纸。 “接口”和“内幕”-不言而喻,界面具有按钮,内幕包含数据。
以下是我在网上其他地方找到的一些代码,试图以此为基础。
function random() {
var ss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var val=ss.getRange("A1").getValue()
var clr =ss.getRange("A1").clearContent()
ss.getRange("A1").setValue(val)
}
举个例子-
A2-A33是我们的数据集列表(高级信息表下)
我绘制了一个按钮,我希望随机选择出现在单元格D17(界面)中。
虚拟数据:https://docs.google.com/spreadsheets/d/1HMmT_dx2_zeDKozEeDElYLaZutc4ruSwjjvVjyGg-Ls/edit?usp=sharing
有人可以引导我完成该操作吗?
答案 0 :(得分:1)
尝试一下:
function getRandomValue(searchColumn,resultCellRow,resultCellColumn) {
var ss=SpreadsheetApp.getActive();
var dsh=ss.getSheetByName('Interface');
var ssh=ss.getSheetByName('UnderTheHood')
var rg=ssh.getRange(2,searchColumn,ssh.getLastRow()-1,1);
var vA=rg.getValues().map(function(r){return r[0]});
while(vA[vA.length-1].length==0) {
vA.splice(vA.length-1,1);
}
dsh.getRange(resultCellRow,resultCellColumn).setValue( vA[Math.floor(Math.random()*vA.length)]);
}
function generateCoach() {
getRandomValue(10,3,4)
}
function coachBackStory() {
getRandomValue(11,5,4)
}
function contracts() {
getRandomValue(7,5,8);
}
我认为您可以弄清楚各个按钮的其余功能。您所要做的就是在“ UnderTheHood”中为其提供搜索列,并在“ Interface”中为该单元格添加答案