【问题标题】:Random string generator randomizing too often随机字符串生成器随机化太频繁
【发布时间】:2018-05-20 01:57:53
【问题描述】:

我正在寻找一个小型随机字符串生成器项目的输入。

我正在尝试创建一个随机字符串生成器,它将三个单词放在一起,然后我可以将我喜欢的字符串保存到另一张纸上。

我正在使用一个基本脚本将 RANDBETWEEN 公式分配给 3 个特定单元格,这非常适合生成字符串,但它似乎会随着脚本中的每个附加步骤不断重新计算。我想运行一个函数,然后如果我喜欢这个字符串,我会运行另一个函数来存储字符串。但是,当我尝试它已经重新计算了 RANDBETWEEN 公式时,它会保存一些完全不同的东西。

我在这里有一个示例表:
https://docs.google.com/spreadsheets/d/1TWziyjjLQJJApkHCqrLzNGMFU0sf-vNEOOSatuhHURo/edit?usp=sharing

这是我分别用于“Go”和“Save”按钮的代码:

function generateString() { 

  var ss = SpreadsheetApp.openById('1b9rP39sgZDOZqu7AmZhOxX9J8CMukmUw7NPY3Qzuq78'); 
  var sheet = ss.getSheetByName('Randomizer'); 
  var cell = sheet.getRange('D4');
  var cell2 = sheet.getRange('E4');
  var cell3 = sheet.getRange('F4');
  cell.setValue('=INDEX(A:A,RANDBETWEEN(1,counta(A:A)))'); 
  cell2.setValue('=INDEX(A:A,RANDBETWEEN(1,counta(A:A)))');
  cell3.setValue('=INDEX(A:A,RANDBETWEEN(1,counta(A:A)))');

  var cell4 = sheet.getRange('P4');
  cell4.copyTo (sheet.getRange ('P5'), {contentsOnly: true});  //an attempt to paste values to record the random string

}

function saveString() {

  var ss = SpreadsheetApp.openById('1b9rP39sgZDOZqu7AmZhOxX9J8CMukmUw7NPY3Qzuq78'); 
  var sheet = ss.getSheetByName('Randomizer'); //replace with source Sheet tab name
  var range = sheet.getRange('P4'); //assign the range you want to copy
  var data = range.getValues();

  var tss = SpreadsheetApp.openById('1b9rP39sgZDOZqu7AmZhOxX9J8CMukmUw7NPY3Qzuq78'); 
  var tsheet = tss.getSheetByName('Saved Strings'); //replace with destination Sheet tab name
  tsheet.getRange(tsheet.getLastRow()+1, 1, 1, 1).setValues(data);

}

如果有人对如何使其正常工作有一些想法,请告诉我。谢谢!

【问题讨论】:

    标签: google-apps-script google-sheets formulas


    【解决方案1】:

    RANDBETWEEN 与 RAND 相同的是易失函数。这意味着每次重新计算电子表格时,他们的结果都会发生变化。

    如果您需要将随机结果“冻结”一段时间而不是此函数,则可以考虑使用自定义函数,因为它们仅在至少一个参数发生变化时才会重新计算。

    相关

    Refresh data retrieved by a custom function in Google Sheet

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      相关资源
      最近更新 更多