谷歌脚本电子表格中的倒计时或睡眠功能

时间:2014-09-25 23:16:11

标签: google-apps-script

起初我想对我糟糕的英语说抱歉...... 从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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

您是否尝试过基于时间的触发器?

Time Trigger

在Apps Script代码编辑器中,使用资源菜单

除非你只想让代码在五分钟后运行一次?

您可以通过编程方式管理触发器:

Google Documentation

因此,您可以在代码中设置触发器以在特定时间运行。

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)

有两点需要注意:

  1. JavaScript中的EQUAL条件为==,而不是= ,所以你的条件不起作用。

  2. Glenn Randers-Pehrson在他的评论中是对的,条件i == 10永远不会是真的,因为你数从0到9。

  3. 如果您正确地重写此代码,它将按预期工作。

    请参阅以下代码:

    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("");
    }
    

    请注意,桑迪在另一个答案中的解决方案也是一种可能的方法......