如何解决x秒后如何在谷歌工作表中打乱数据? 脚本:Google Apps 脚本端:Code.gsHTML 和 Javascript 端:index.html
我正在处理一个谷歌表,我需要在每 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>
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。