我需要:
基本上是这样:
function new_campaign(){
var sheet_name = new_sheet();
main_function(sheet_name);
trigger(sheet_name);
}
使用一张工作表就没有问题,因为我可以在工作表名称之前将其设置为全局变量。 问题是我必须创建多个工作表,并且所有工作都必须继续进行。
我创建了新工作表的功能,以便它返回工作表的名称,因此我可以通过工作表调用 main_function 。 不幸的是,触发不是那么容易,因为我不知道如何通过工作表。
function trigger(sheetName) {
ScriptApp.newTrigger("main_function")
.timeBased()
.everyMinutes(1)
.create();
}
更新
根据建议,我尝试使用PropertiesService
映射触发器ID与函数中需要使用的参数(在我的情况下为sheetName)
function trigger(sheetName) {
var triggerID = ScriptApp.newTrigger("main_function")
.timeBased()
.everyMinutes(1)
.create()
.getUniqueId();
var scriptProperties = PropertiesService.getScriptProperties();
scriptProperties.setProperty(triggerID, sheetName);
}
更新2
我尝试从事件对象中提取触发器ID,以从scriptProperties
获取sheetName。现在我的main_function
像这样
function main_function() {
var e = arguments[0];
var scriptProperties = PropertiesService.getScriptProperties();
var sheetName = scriptProperties.getProperty(e.triggerUid);
}
答案 0 :(得分:3)
解决方案
有一个函数可以处理其他函数和触发器:
true
触发功能:
&&
和main_function函数:
function new_campaign(){
var sheet_name = new_sheet(); //function to create a new sheet
main_function(); //to execute main_function without delay the first time
trigger(sheet_name); //set the trigger
}