在我的脚本中,我正在从电子表格中读取数据并创建基于时间的触发器,以便在特定时间发出包含某些数据的POST请求。
问题是,我找不到任何方法将数据传递给触发器调用的函数。 Google App Script doc提供的所有内容都是能够命名要调用的函数,但无法传递参数。
var triggerDay = new Date(2012, 11, 1);
ScriptApp.newTrigger("makePostRequest")
.timeBased()
.at(triggerDay)
.create();
有谁知道如何传递makePostRequest
参数,以便函数将使用所需的数据执行?
答案 0 :(得分:9)
这是可能的,但需要多个步骤。这里最重要的是event objects(由@ St3ph提及)。
# find the tr tag within the game with data-row=1
tr = allgames.find_element_by_xpath('//tr[@data-row="1"]')
# select the Box Score
tr.find_element_by_link_text("Box Score")
如果您正在为其他值使用脚本属性,则可能必须嵌套触发器值。
此外,您可能必须使用script lock来防止并发修改脚本属性。
答案 1 :(得分:2)
从触发器启动函数时,无法传递参数。
您必须将此信息存储在某处以允许脚本找到它。例如,根据您所说的我理解您在电子表格中有一些数据,您可以将此信息放在电子表格中。该函数将根据触发时间来管理查找适当信息的方式。
斯特凡
答案 2 :(得分:1)
我不确定它是否能解决您的具体问题,但我发现最方便的解决方法是在没有参数的函数中包含参数的函数,然后从中获取参数您在脚本顶级设置的静态变量。
您仍然需要在脚本中设置值,但至少可以将逻辑分开,以便您可以使用具有不同值的基本函数。
function functionAToTrigger(){
functionToTriggerWithParams(myAParams);
}
var myAParams = {
url: 'https://aurl.com',
date: new Date(2012, 11, 1)
};
function functionBToTrigger(){
functionToTriggerWithParams(myBParams);
}
var myBParams = {
url: 'https://burl.com',
date: new Date(2017, 11, 1)
};
function functionToTriggerWithParams(myParams){
// Add some code to run some checks
// Add some code here to log the results
}
ScriptApp.newTrigger(functionAToTrigger).timeBased().everyMinutes(10).create();
ScriptApp.newTrigger(functionBToTrigger).timeBased().everyMinutes(10).create();
答案 3 :(得分:0)
triggerDay
是Trigger,有uniqueid。
makePostRequest
的第一个参数是Time-driven event,它具有未记录的属性“triggerUid”
,
所以正如所说的@ St3ph你需要以某种方式存储一对你的“uniqueid”和“参数”并通过“triggerUid”从存储中获取