如何在 x 秒后随机播放 google 张中的数据?

How to shuffle data in google sheets after x number of seconds?

我正在处理 google sheet 我需要每隔 x 秒打乱我的记录,我正在做的是选择整个数据然后转到 Data > Randomize Data 将其随机化。

我需要的是每隔 x 秒自动随机化一次。应该怎么做才能做到这一点?谢谢

我相信你的目标如下。

  • 您想通过指定特定间隔来随机化 Google 电子表格中的范围。

为了实现您的目标,我想提出以下 2 个示例脚本。

示例脚本 1:

在此示例脚本中,仅使用 Google Apps 脚本。作为测试用例,在您 运行 脚本之前,请将复选框设置为单元格“A1”。在此脚本中,在脚本 运行 后选中复选框时,脚本将停止。

作为重点,在现阶段,Google Apps Script 的最大执行时间为 6 分钟。 Ref请注意这一点。

脚本:

function sample1() {
  const interval = 2; // 2 seconds. Please set here.

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  sheet.getRange("A1").uncheck();
  while (true) {
    sheet.getActiveRange().randomize(); // or SpreadsheetApp.getActiveSheet().getRange("A1:C10").randomize();
    Utilities.sleep(interval * 1000);
    SpreadsheetApp.flush();
    if (sheet.getRange("A1").isChecked()) {
      ss.toast("end");
      break;
    }
  }
}

示例脚本 2:

在当前阶段,Google Apps Script的最长执行时间为6分钟。 Ref 所以,如果你想 运行 脚本超过这个时间,我建议在侧边栏和对话框中使用 Javascript。

请将以下脚本复制并粘贴到脚本编辑器中。

Google Apps 脚本端:Code.gs

请运行openSidebar。这样,侧边栏就在电子表格上打开了。并且,当您单击“开始”按钮时,活动范围将随机化 interval。单击“结束”按钮时,脚本将停止。

function openSidebar() {
  const html = HtmlService.createHtmlOutputFromFile("index");
  SpreadsheetApp.getUi().showSidebar(html);
}

function randomizeRange() {
  SpreadsheetApp.getActiveRange().randomize();
}
  • 比如当你想随机化特定范围时,也可以使用下面的脚本。在这种情况下,“A1:C10”是随机的。

      SpreadsheetApp.getActiveSheet().getRange("A1:C10").randomize();
    

HTML&Javascript方:index.html

<input type="button" value="start" onclick="start()">
<input type="button" value="stop" onclick="stop()">

<script>
const interval = 2; // 2 seconds. Please set here.
let r;

const worker = _ => new Promise((resolve, reject) => google.script.run.withFailureHandler(e => reject(e)).withSuccessHandler(e => resolve(e)).randomizeRange());

function start() {
  r = setInterval(async () => await worker(), interval * 1000);
}

function stop() {
  clearInterval(r);
}
</script>

参考文献: