61704


お世話になります。  
GAS (Google Apps Script）で質問です。

  * `MailApp.sendEmail`という関数でメールを発信しています。
  * `HtmlService.createTemplateFromFile`という関数でHTMLメールをテンプレートから組み立てています。
  * HTML側では `<?=関数名(); ?>` という構文で、GASの関数を実行して、その戻り値でHTMLを書き換えています。

(GAS側：`Code.gs`)

[code]

    function sendMail() {
      var recipient = "foo@example.com";
      var subject = "test mail subject";
      var variable = "こんにちは" + recipient + "さん"; // この内容をHTMLメールに入れ込みたい    
    
      var body = '';
      var htmlBody = HtmlService.createTemplateFromFile('test').evaluate().getContent();
    
      var options = {
        htmlBody: htmlBody
      };
      MailApp.sendEmail(recipient, subject, body, options);
    }
    
    function passData() {
      return "こんにちは、メールを受け取った人！"; // これでデータを渡せることは分かっているが。。
    }
    
[/code]

(HTML側: `test.html`)

[code]

    <!DOCTYPE html>
    <html>
    
    <head>
      <base target="_top">
    </head>
    
    <body>
      <?=passData(); ?>
    </body>
    
    </html>
    
[/code]

上のコードで、関数`sendMail()`の中で、`test.html`の中身を変更するにはどうすればいいでしょうか？  
現状では、`passData()`を常に呼び出しているので「こんにちは、メールを受け取った人！」という文字列を埋め込むことは出来ていますが、`sendmail()`の中で指定した、「こんにちはfoo@example.comさん！」などの、さまざまな状況に応じたメッセージを指定したいのです。

よろしくお願いします。


CC BY-SA 4.0
2019-12-19T09:58:27.040
61582
2019-12-23T10:17:19.130
2019-12-23T10:17:19.130
2238
26673
question
html google-apps-script
メールテンプレートを動的に変更したい？


自己回答です。  
HTML側で`<?=関数();?>`ではなく`<?=変数>`と書き、GAS側でセットすればいいだけでした。

(GAS側：`Code.gs`)

[code]

    function sendMail() {
      var recipient = "foo@example.com";
      var subject = "test mail subject";
      var variable = "こんにちは" + recipient + "さん"; // この内容をHTMLメールに入れ込みたい    
    
      var body = '';
      var htmlContent = HtmlService.createTemplateFromFile('test');
      var html.variable = variable;
      var htmlBody = htmlContent.evaluate().getContent();
    
      var options = {
        htmlBody: htmlBody
      };
      MailApp.sendEmail(recipient, subject, body, options);
    }
    
[/code]

(HTML側: `test.html`)

[code]

    <!DOCTYPE html>
    <html>
    
    <head>
      <base target="_top">
    </head>
    
    <body>
      <?= variable ?>
    </body>
    
    </html>
    
[/code]

参考：<https://productivityresearch.net/programing/13/>


CC BY-SA 4.0
2019-12-23T08:58:51.390
61704
2019-12-23T08:58:51.390
26673
61582
answer