如何洗牌数据在谷歌表后x秒数?



我正在工作在一个谷歌表,我需要洗牌我的记录后每x秒数,我所做的是选择整个数据,然后去Data > Randomize Data随机化它。

我需要的是每隔x秒自动随机化。要做到这一点应该做些什么呢?谢谢。

我相信你的目标如下。

  • 你想通过给出特定的间隔来随机化谷歌电子表格的范围。

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

示例脚本1:在这个示例脚本中,只使用了Google Apps script。作为测试用例,在运行脚本之前,请将复选框设置为单元格"A1"。在此脚本中,当脚本运行后选中复选框时,脚本将停止。

作为重要的一点,在现阶段,Google Apps Script的最大执行时间为6分钟。请小心。

脚本:

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分钟。所以,如果你想多次运行脚本,我建议在侧边栏和对话框中使用Javascript。

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

Google Apps Script side: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>

引用:

  • 随机()
  • Google工作空间文档中的对话框和侧边栏

最新更新