2017-04-24 5 views
2

私は、受信者の配列とメールの送信予定時刻を持っています。私はその後、他の仕事は周りがあり、私はこれらのparams(受信者)google-app-scriptでトリガされた関数にパラメータを渡す方法

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(); 
} 

のparamsは、時間ベースのトリガーに渡すことができない場合を渡すことができたにトリガを作成するために、何らかの方法があるかどうかを知るに熱心なのですか?

+0

パラメータをトリガに渡すことはできません。 [PropertiesService](https://developers.google.com/apps-script/reference/properties/properties-service)の使用を検討しましたか? –

+0

PropertiesServiceに変数を格納する場合、トリガーを作成する必要があり、実行後にトリガーを削除する方法などがあります。@ Pierre-MarieRichard –

+0

トリガーを作成し、PropertiesServiceに変数を格納します。次に、関数にコードを追加して、PropertiesServiceから変数を取り戻すことができます。関数が終了すると、トリガーをクリアします。 function delTrigger(){ var triggers = ScriptApp.getProjectTriggers(); for(var i = 0; i

答えて

1

これを行う直接的な方法はありません。しかし、ここでは回避策があります。 注:これは実際のコードではなく命令です。コード内のコメントを確認してください。

function send_mail(recipients) 
{ 
    ............ 
    ............ 
} 

function triggerHandler(e){ 
    var triggerId = e.triggerUid; 
    //Iterate through all triggers and get the matching triggerId and corresponding recipient 
    send_mail(recipient); 
} 

function schedule_mail(recipients,schedule) 
{ 
    var trigger = ScriptApp.newTrigger("triggerHandler").timeBased().at(schedule).create(); 
    var ID = trigger.getUniqueId(); 
    //Save this ID against the recipient details in user properties 
} 
+0

ありがとうございます@ハリDasを回避してください。それは正常に働いた。 –

+0

私は "e"が何であるか不思議ですが、それは関数のパラメータではありませんか? 「イベントオブジェクト」をご覧ください(https://developers.google.com/apps-script/guides/triggers/events)。 >トリガーが発生すると、Apps Scriptはイベントオブジェクトを引数として渡します。通常はeと呼ばれます。イベントオブジェクトには、トリガを起動させたコンテキストに関する情報が含まれています。 – edelans

関連する問題