2016-11-21 73 views
0

我想要觸發器運行指定的時間量發生編輯後。在編輯後運行觸發器X的時間量

我在想我可以組合一個編輯觸發器和一個基於時間的觸發器來實現這個功能,但我不清楚它是如何實現的。

提供一些額外的細節。

我有一個Google表格,可以跟蹤我的胰島素使用情況。我應該在給予胰島素2小時後檢查血糖。

當我管理胰島素時,我會輸入Google表格,時間/金額等等......當我進行此項輸入時,我想創建一個觸發器,在2小時內運行以發送電子郵件通知給我提醒我再次檢查我的血糖並進行新的檢查。

回答

4

這是我如何在Google App腳本中使用時間觸發器。

創建時間觸發器的函數。

function createTriggger(name,action,time){ 
// Time is in minutes 
    var trigger = ScriptApp.newTrigger(action) 
    .timeBased() 
    .after(time*60*1000) 
    .create(); 
    var triggerID = trigger.getUniqueId(); 

// Store trigger id to delete the trigger once it has executed 
    PropertiesService.getScriptProperties().setProperty(name, triggerID); 
}; 

name是存儲觸發ID的屬性的名稱,所以它執行後,你可以刪除該觸發器。 action是您希望觸發器執行的功能的名稱,time在幾分鐘內。

在您希望觸發器執行的函數的最後一行中,使用此行來獲取觸發器ID並將其從觸發器列表中刪除。將您的觸發器ID屬性的名稱放入name

var triggerID = PropertiesService.getScriptProperties().getProperty(name) 
deleteThisOne(triggerID) 

這裏是刪除功能可按:

function deleteThisOne(id){ 
    var triggers = ScriptApp.getProjectTriggers(); 
    for(var i=0;i<triggers.length;i++){ 
    if(triggers[i].getUniqueId() == id){ 
     ScriptApp.deleteTrigger(triggers[i]); 
     break; 
    }; 
    }; 
}; 

看看谷歌的腳本安裝的觸發器爲Limitations

0

當您的編輯觸發器觸發時,您可以使用ClockTrigger - 請參閱ClockTriggerBuilder文檔和示例,它允許您設置相對於當前執行時間的時間或絕對時間。在電子表格中的某個角落細胞,你永遠不會修改

設置「0」值:

0

您可以使用周圍的工作是這樣的。隱藏該列。

在電子表格上設置onEdit觸發器,並寫入其設置值'0'的函數。

設置另一個觸發器,每10分鐘觸發一次,每增加10個單元格值。此外,添加到該功能:

if(cellValue%120 == 0) 
{ 
    setReminder(); //function to send you reminder 
    cellValue = 0; 
}