格林威治標準時間 6。這是我的實際時區。我看到其他人對此有疑問,所以我嘗試了這個答案的解決方案。那沒起效。這是我使用的確切代碼:
function addTrigger() {
// main() will be called weekly on Monday at 16:00 in the specified time zone
var everyWeek = ScriptApp.newTrigger("setTrigger")
.timeBased()
.everyWeeks(1)
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.inTimezone("Etc/UTC")
.atHour(16)
.create();
}
所有這一切都是在 GMT-6 的 16:00 創建一個觸發器。它完全忽略了.inTimezone("Etc/UTC").
我嘗試使用 VPN 來欺騙我的位置,看看是否允許時區從 GMT-6 更改,但沒有。我的 Google 帳戶中是否有某個地方可以從中提取并獲取 GMT-6?我檢查了我的 Google Calandar,并且將 GMT-0 作為我的默認值,它沒有任何區別。
當我在腳本中獲得當前日期時,我會在 GMT-0 中獲得日期和時間。因此,在我在腳本中執行的操作與觸發器操作的時間之間基本上存在 6 小時的恒定偏移。似乎一切都遵循 GMT-0,除了以某種方式保持 GMT-6 的觸發器。
請有人告訴我如何更改觸發器的時區。我在這樣一個愚蠢的問題上浪費了太多時間。
我的appsscript.json檔案如下所示:
{
"timeZone": "Etc/UTC",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
uj5u.com熱心網友回復:
這可能是您格式化觸發器的方式?
這是我在創建一個時會做的事情。
function setUpTrigger() {
ScriptApp.newTrigger('setTrigger')
.timeBased()
.everyWeeks(1)
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(16)
.nearMinute(0)
.inTimezone('Etc/UTC')
.create();
}
function setTrigger() {
//Your stuff that happens every monday at 1600
}
另請注意,如果您使用 atHour,則時間將是 1600-1700 之間的任何時間。
如果您包含類似 nearMinute(0) 的內容,則觸發器也會有 15 分鐘的 /- 間隔來運行。
uj5u.com熱心網友回復:
所有這一切都是在 GMT-6 的 16:00 創建一個觸發器。它完全忽略了 .inTimezone("Etc/UTC")。
我相信這是不準確的。經過測驗,我發現在UTC時間16:00創建了一個觸發器。即使 UI 儀表板可能仍顯示GMT-6實際觸發器是在指定時區創建的。我相信這只是一個 UI 錯誤。
uj5u.com熱心網友回復:
在呼叫其他方法后嘗試將時區設定為最后一件事:
function addTrigger() {
const everyWeek = ScriptApp.newTrigger('setTrigger')
.timeBased()
.everyWeeks(1)
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(16)
.inTimezone('Etc/UTC')
.create();
}
如果腳本專案系結到電子表格,使用電子表格的時區可能是最簡單的,因為在電子表格的File > Settings中很容易檢查和設定。要使用電子表格的時區,請替換'Etc/UTC'為SpreadsheetApp.getActive().getSpreadsheetTimeZone().
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/489899.html
標籤:javascript 谷歌应用脚本 谷歌表格 触发器 时区
下一篇:批量翻譯Google表格中的行
