我有一個Google工作表電子表格,需要每隔一週運行一次腳本。現在,我正在手動運行它。我想用時間驅動的觸發器,但我無法弄清楚星期四凌晨1點會做什麼的任何組合。任何人都知道這可能會完成的方式?每隔一週運行一次Google腳本
1
A
回答
1
您可以使用腳本屬性保存有關腳本的屬性。
設定下面的功能,以每週運行
function runEveryWeek() {
var runThisWeek = ScriptProperties.getProperty("runThisWeek");
if (runThisWeek) {
//do your task here
ScriptProperties.setProperty("runThisWeek",false);
} else {
ScriptProperties.setProperty("runThisWeek",true);
}
}
你必須初始化「runThisWeek」屬性,使之正確設置。
1
試試這個:
// The init() function runs once to set up the initial trigger.
function init() {
ScriptApp.newTrigger("ThursdayTrigger")
.timeBased()
.atDate(2013, 3, 21) // Setup the first trigger on a specific date
.create();
}
function ThursdayTrigger() {
// 1. write the function code here
// 2. delete the existing ThursdayTrigger
var triggers = ScriptApp.getScriptTriggers();
for (var i = 0; i < triggers.length; i++) {
if (triggers[i].getHandlerFunction() == "ThursdayTrigger") {
ScriptApp.deleteTrigger(triggers[i]);
}
}
// 3. setup another trigger in the same function that triggers after 14 days.
ScriptApp.newTrigger("ThursdayTrigger")
.timeBased()
.after(1000*60*60*24*14) // Alternate Thursday
.create();
}
2
你可以原型延長日期對象給你一個星期數,然後選擇呼叫只在偶數週(或奇數明顯)
Date.prototype.getWeekNumber = function() {
var firstDay = new Date(this.getFullYear(),0,1);
return Math.ceil((((this - firstDay)/86400000) + firstDay.getDay()+1)/7);
}
和然後在週四的星期四觸發器中,將整個區域包裝在一個條件下,如
if (today.weekNumber() % 2 === 0) {
// triggered function here
}
但是我t hink我喜歡Phil Bozak的開/關標誌方法
0
function createBiWeeklyTrigger() {
// Trigger every other Monday at 06:00.
ScriptApp.newTrigger('function_name')
.timeBased()
.everyWeeks(2)
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(6)
.create();
}
0
ScriptProperties庫現在已經過時。 PropertiesService Documentation幫助我找出了下面的解決方案。
function runEveryWeek() {
var scriptProps = PropertiesService.getScriptProperties();
if(scriptProps.getProperty('runThisWeek') == "True"){
//do your task here
Logger.log("tast executes");
scriptProps.setProperty("runThisWeek", 'False');
} else {
Logger.log("task does not execute");
scriptProps.setProperty("runThisWeek", 'True');
}
}
我最初試圖值設置爲布爾值,但是引起一個問題,因爲該方法.getProperty()
有返回類型string
。我試圖通過使用大寫的第一個字母來明確布爾和布爾表達式之間的區別。
您可以通過運行後檢查日誌來對其進行測試。
相關問題
- 1. 運行任務週期性(每天一次/每週一次)
- 2. PHP每隔n秒運行一次python腳本
- 3. 每10秒運行一次node.js腳本
- 4. 每分鐘運行一次PHP腳本
- 5. Javascript每300秒運行一次腳本
- 6. Javascript SetInterval執行腳本每隔一個間隔13次
- 7. cron每週運行一次命令
- 8. 如何在bash中每週的特定一天只運行一次python腳本
- 9. 每週運行一次任務,在Heroku上只運行4次
- 10. 在每次每週運行
- 11. 腳本只運行一次
- 12. Google腳本標記行一次一個
- 13. 如何安排一個cron作業,每隔兩週運行一次
- 14. 如何讓一個Ruby腳本每秒運行一次?
- 15. 谷歌腳本:使腳本每分鐘運行一次,但每天只運行一小時
- 16. quarz cron表達式在週一每n周運行一次工作,週三?
- 17. 如何每隔幾分鐘運行一次cron作業每隔幾小時運行一次
- 18. 在Django應用程序中每隔n天運行一次Python腳本
- 19. Shell腳本在PID正在運行時每隔X秒檢查一次
- 20. 附表PowerShell腳本運行每隔一小時
- 21. Apache每隔一段時間崩潰PHP腳本運行... Windows
- 22. 每隔n周執行一次Cron表達式
- 23. 每5秒執行一次腳本
- 24. mysql_fetch_row每隔一行返回一次?
- 25. Oracle SQL每隔一行更新一次
- 26. BufferedReader readLine每隔一行跳過一次
- 27. SqlDataReader每隔一行讀取一次?
- 28. 循環每隔一行跳過一次?
- 29. Google App腳本:從另一個腳本內運行腳本?
- 30. VBA每天運行一次宏一次
+1優秀的,我刪除我的答案... – 2013-02-19 11:29:37
但是,那麼你必須處理夏令時,以及由於觸發器不是立即創建的事實而增加的小偏移量。最終,它不會在凌晨1點運行。我更喜歡原型版本。 – Fred 2013-02-19 16:31:39