在按钮按下时从列表中选择随机数据的脚本

时间:2019-09-15 14:54:12

标签: random google-apps-script google-sheets google-apps-script-editor

我正在创建一个电子表格,当我按下按钮时,该电子表格可以自动从特定列中选择随机单元格数据。但是,我无法弄清楚该脚本。

多亏了一些朋友,我尝试了一些涉及使用附加组件的变体,但理想情况下,我不想使用任何类似的东西,因为如果人们想要在没有附加组件的情况下进行复制,则它必须可用。

我想要做的是单击一个特定的按钮,然后相邻的单元格显示列表中给定数据集中的随机值。

我有两张纸。 “接口”和“内幕”-不言而喻,界面具有按钮,内幕包含数据。

以下是我在网上其他地方找到的一些代码,试图以此为基础。

  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

有人可以引导我完成该操作吗?

1 个答案:

答案 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”中为该单元格添加答案