起初我想对我糟糕的英语说抱歉...... 从7天开始,我尝试用谷歌脚本编程。 我想要的是: 在5分钟之后(例如)应该擦除柱/行A1:B4(例如)。 我想用睡眠功能来解决这个问题,但它确实有效。 我也没有使用线程。 Mybe的一些论坛可以帮助我: - )
function test(){
var ss = SpreadsheetApp.getActiveSheet();
var i=0;
for(i; i<10; i++){
if (i=10){
ss.getRange(3,4,9,1).setValue("");
}
else{
Utilities.sleep(5000);
}
}
}
&#13;
答案 0 :(得分:1)
您是否尝试过基于时间的触发器?
在Apps Script代码编辑器中,使用资源菜单
除非你只想让代码在五分钟后运行一次?
您可以通过编程方式管理触发器:
因此,您可以在代码中设置触发器以在特定时间运行。
Trigger Builder - Run after a certain amount of time
// Creates a trigger that will run 10 minutes later
ScriptApp.newTrigger("myFunction")
.timeBased()
.after(10 * 60 * 1000)
.create();
答案 1 :(得分:0)
有两点需要注意:
JavaScript中的EQUAL条件为==
,而不是=
,所以你的条件不起作用。
Glenn Randers-Pehrson在他的评论中是对的,条件i == 10永远不会是真的,因为你数从0到9。
如果您正确地重写此代码,它将按预期工作。
请参阅以下代码:
function test(){
var ss = SpreadsheetApp.getActiveSheet();
for(var i=0; i<10; i++){
if (i==9){
ss.getRange(3,4,9,1).setValue("");
}
else{
Utilities.sleep(5000);// argument is in millisecs > total time here is 45 seconds (9*5)
}
}
}
此代码也可以更简单地编写:
function test(){
var ss = SpreadsheetApp.getActiveSheet();
for(var i=0; i<10; i++){
Utilities.sleep(5000);
}
ss.getRange(3,4,9,1).setValue("");
}
请注意,桑迪在另一个答案中的解决方案也是一种可能的方法......