【发布时间】:2017-09-21 01:33:03
【问题描述】:
我有一组收件人和必须发送邮件的预定时间。我很想知道是否有办法创建一个触发器,我可以将这些参数(收件人)传递给它
function send_mail(recipients)
{
var id = DocumentApp.getActiveDocument().getId();
for(i=0;i<recipients.length;i++)
{
var url = "https://docs.google.com/feeds/download/documents/export/Export?id="+id+"&exportFormat=html";
var param =
{
method : "get",
headers : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions:true,
};
var html = UrlFetchApp.fetch(url,param).getContentText();
var raw = Utilities.base64EncodeWebSafe("Subject: Test\r\n" +
"To:" +recipients[i]+"\r\n" +
"Content-Type: text/html; charset=UTF-8\r\n\r\n" +
html+"\r\n\r\n");
var message = Gmail.newMessage();
message.raw = raw;
var sentMsg = Gmail.Users.Messages.send(message, recipients[i]);
}
}
function schedule_mail(recipients,schedule)
{
ScriptApp.newTrigger("send_mail").timeBased().at(schedule).create();
}
如果无法将参数传递给基于时间的触发器,那么还有其他解决方法吗?
【问题讨论】:
-
我认为您不能将参数传递给触发器。你有没有考虑使用PropertiesService?
-
如果我将变量存储在 PropertiesService 中如何管理触发器,例如我应该何时创建触发器以及如何在执行后删除触发器@Pierre-MarieRichard
-
您创建触发器并将变量存储在 PropertiesService 中。然后,您可以在函数中添加一段代码以从 PropertiesService 中取回变量。函数完成后,清除触发器: function delTrigger(){ var triggers = ScriptApp.getProjectTriggers(); for (var i = 0; i
标签: google-apps-script google-docs gmail-api