我有一个脚本可以将数据从一张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运行,依此类推每分钟解释30分钟
如果我将触发器设置为每分钟运行一次"服务使用太多计算机时间一天"
有没有办法在脚本触发器上设置它?
谢谢!
答案 0 :(得分:1)
Google会限制您使用触发器的频率。您不能为每分钟设置一堆触发器,因为每个用户限制为20个(更多关于配额here)。据我所知,这是针对并发触发器的。每日重复的触发器每小时只会随机发射一次。
您可能想尝试创建触发器programmatically。您将设置一个初始触发器,该触发器将在特定的日期和时间触发脚本。
该脚本必须有一个额外的功能,可以检查它是什么时间,并相应地删除前一个触发器,创建一个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;
}
}
}
这将删除启动脚本的任何触发器。
答案 1 :(得分:1)
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到12:30之间每分钟运行一次