2016-07-22 41 views
0

我有一个带参数的函数,并希望为无人值守的函数执行脚本创建触发器。将参数传递给脚本创建触发器

function getLastNdays(nDaysAgo) { 
 
    var today = new Date(); 
 
    var before = new Date(); 
 
    before.setDate(today.getDate() - nDaysAgo); 
 
    return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd'); 
 
} 
 

 
function runNextTrigger() { 
 
    
 
    var GUID = "[email protected]#E$RI" 
 
    var userProperties = PropertiesService.getUserProperties(); 
 
    var nextTrigger = ScriptApp.newTrigger("getLastNdays").timeBased().after(1 * 60 * 1000).create(); 
 
    
 
    var triggerId = nextTrigger.getUniqueId(); 
 
    userProperties.setProperty("LastNdays_" + GUID, triggerId);  
 
}

即使触发创建它什么都不是正在传递没有参数值是有办法的参数传递给脚本创建触发器。

+0

我还没有试过,但你可以尝试添加/使用电子表格前追踪'nDays'(日期比较)。使用电子表格中的数据获取该值,然后使用[已安装的触发器](https://developers.google.com/apps-script/guides/triggers/installable#time-driven_triggers)运行您的无人参与功能。 –

回答

0

我可以建议你这样的事情

function getLastNdays(before) { 
if(!(before instanceof Date)){ 
    var timestamp = PropertiesService.getUserProperties().getProperty("LastNdays_" +before.triggerUid); 
    before = new Date(); 
    before.setTime(timestamp); 
} 

    //var today = new Date(); 
    //var before = new Date(); 
    //before.setDate(today.getDate() - nDaysAgo); 
return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd'); // notice return wont return anywhere as it's the function called 
SpreadsheetApp.openById("SSID") 
.getSheetByName("Sheet2").appendRow([new Date(), Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd')]); // used a spreadsheet to log the action 
} 

function runNextTrigger() { 

    var GUID = "[email protected]#E$RI" 
    var userProperties = PropertiesService.getUserProperties(); 
    var nextTrigger = ScriptApp.newTrigger("getLastNdays").timeBased().after(10).create(); 

    var triggerId = nextTrigger.getUniqueId(); 
    //userProperties.setProperty("LastNdays_" + GUID, triggerId); 
    var now = new Date(); 
    userProperties.setProperty("LastNdays_" + triggerId,now.getTime()); 
}