如何在 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>
参考文献:
我正在处理 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>