2014-09-25 68 views
1

起初我想說我的英語壞話抱歉... 因爲7天我嘗試用谷歌腳本進行編程。 我想要什麼: 5分鐘後(例如)應該刪除COLUMN /行A1:B4(例如)。 我想用der睡眠功能來解決這個問題,但它沒有效果。 我也doesen't與線程一起工作。 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); 
 
     } 
 
    } 
 
}

+0

「睡眠」不以秒爲參數嗎? 5000秒約一個半小時。 – 2014-09-25 23:44:15

+0

這是一個例子... 該函數不會等待任何時間。 – DominikR 2014-09-25 23:50:44

+1

也許嘗試擦除時,我= 9而不是當我= 10。或者爲(i; i <= 10; i ++)運行「for」循環 – 2014-09-25 23:58:15

回答

1

您已經嘗試了基於時間觸發?

Time Trigger

在Google Apps腳本代碼編輯器,使用資源菜單

除非你只希望該代碼後五分鐘運行一次?

可以以編程方式管理一個觸發器:

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(); 
0

2件事情需要注意:

  1. JavaScript中的同等條件是==而不是一個單一= ,所以你的條件不工作。

  2. 格倫·蘭德斯·皮爾遜就在他的評論中,我== 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(""); 
} 

注意,桑迪在對方的回答解決方案也是一個可行的辦法來做到這一點...

+0

謝謝你的職位!它運作wunderfull :-) 在類範圍內提供一種方法,我可以「阻止」工作表中的範圍/區域以及再次解鎖同一區域的方法? – DominikR 2014-09-26 23:05:54

+0

請考慮接受答案。你能否在一篇新文章中澄清你的問題? Danke :-) – 2014-09-27 07:03:40

相關問題