[英]Time based Google Script - Trigger between 12:00am to 12:30am every minute
我有一個腳本可以將數據從一個Google工作表復制到另一個工作表,代碼是這樣的:
function copy() {
var sss = SpreadsheetApp.openById('ID'); //replace with source ID
var ss = sss.getSheetByName('Cap'); //replace with source Sheet tab name
var range = ss.getRange('A:F'); //assign the range you want to copy
var data = range.getValues();
var tss = SpreadsheetApp.openById('ID'); //replace with destination ID
var ts = tss.getSheetByName('Cap'); //replace with destination Sheet tab name
ts.getRange(1, 1, data.length, data[0].length).setValues(data);
}
我需要每天凌晨12:00運行此腳本,直到凌晨12:30每分鍾運行一次,我不再需要在當天運行該腳本
我可以設置觸發器,例如白天(在12點至凌晨1點之間運行)或小時時間(每隔一小時),但這不是我所需要的,那不准確,我只需要在12:00 am准確運行,依此類推,如30每分鍾
如果我將觸發器設置為每分鍾運行一次,則會收到“服務占用一天的計算機時間過多”的信息
有沒有辦法在腳本觸發器上進行設置?
謝謝 !
Google對觸發器的使用頻率有一些限制。 您不能為每分鍾設置一堆觸發器,因為每個用戶最多只能設置20個觸發器( 此處更多關於配額的信息 )。 據我所知,這是用於並發觸發器的。 每天重復的觸發器只會每小時隨機觸發一次。
您可能希望嘗試以編程方式創建觸發器。 您將設置一個初始觸發器,該觸發器將在特定的日期和時間觸發腳本。
該腳本將必須具有一個附加功能,該功能將檢查現在幾點,並相應地刪除先前的觸發器,為12:01然后12:02然后12:03創建觸發器,依此類推,直到檢查觸發器是否已創建當時是12:30,那么它創建的下一個觸發條件是第二天的12:00。
這里的關鍵問題是要絕對確定您的腳本執行時間不會超過1分鍾,並且肯定會及時啟動。 您也可以嘗試讓它使用每分鍾重復一次觸發器,但是同樣適用-您的腳本不能運行超過1分鍾,否則您下次啟動時會遇到問題。
至於刪除舊觸發器,您可以輕松地執行以下操作:
function(trig) {
var triggers;
var trigCount;
triggers = ScriptApp.getProjectTriggers();
for (trigCount = 0; trigCount<triggers.length; trigCount++) {
if (triggers[trigCount].getUniqueId() == trig.triggerUid) {
ScriptApp.deleteTrigger(triggers[trigCount]);
break;
}
}
}
這將刪除啟動腳本的任何觸發器。
FYI
我找到了解決方案,如果有人需要相同的解決方案
該代碼是
function CopyLive1() {
var date = new Date();
var day = date.getDay();
var hrs = date.getHours();
var min = date.getMinutes();
if ((hrs >= 0) && (hrs <= 0) && (min >= 0) && (min <= 30 )) {
var sss = SpreadsheetApp.openById('ID'); //replace with source ID
var ss = sss.getSheetByName('L1'); //replace with source Sheet tab name
var range = ss.getRange('A:E'); //assign the range you want to copy
var data = range.getValues();
var tss = SpreadsheetApp.openById('ID'); //replace with destination ID
var ts = tss.getSheetByName('L1'); //replace with destination Sheet tab name
ts.getRange(1, 1, data.length, data[0].length).setValues(data);
}
}
並添加每分鍾觸發,這種方式只會在12:00 am和12:30 am之間每分鍾運行一次
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.