【问题标题】:Having issue with passing HTML Template body to gmail body through App-Script通过 App-Script 将 HTML 模板正文传递给 gmail 正文时遇到问题
【发布时间】:2021-01-05 06:46:28
【问题描述】:

我正在尝试每天向用户发送一封电子邮件提醒他们未完成的任务。我正在为电子邮件正文中的 HTML 内容使用 HTML 模板,但我在电子邮件中收到的是这样的:

[对象对象]

代码似乎运行顺利,日志数据看起来不错,我需要帮助了解我做错了什么吗?

谢谢,

function TasKReminder() {
 const ss= SpreadsheetApp.openById('1pNTZxlj500VbXcGY6aIuzBtqaTP6Ho3dpPYCoRHtjMM').getSheetByName("My Open Tasks");
 const pendingTasks = ss.getRange("B1").getValue();
 const lr = ss.getLastRow();
 if(pendingTasks > 0) { 
    var tData = ss.getRange(5,1,pendingTasks,8).getDisplayValues();
 //  Logger.log(tData);
 }
 //Delay Tasks
 var delayedTasks = tData.filter(function(tasks){
   return tasks[6].length > 0 ;
 });
 const htmlTemplate = HtmlService.createTemplateFromFile("Template");
 htmlTemplate.delayedTasks = delayedTasks;
 const htmlEmailbody = htmlTemplate.evaluate().getContent();
 Logger.log(htmlEmailbody);
  GmailApp.sendEmail("abc@xyz.com", "Pending task on your Task List",{htmlbody: htmlEmailbody });
}
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    Hi,<B></B>
    <table>
       <thead>
             <tr>
                 <th>Task Type</th><th>Task Name</th><th>Code</th><th>Assigned By</th><th>Planned Completion</th><th>Delay</th><th>Status</th>
             </tr>      
       </thead>
       <tbody>
             <? delayedTasks.forEach((r,i) => { ?>
              <tr>
                <td><?= r[0]?></td><td><?= r[1]?></td><td><?= r[3]?></td><td><?= r[4]?></td><td><?= r[5]?></td><td><?= r[6]?></td>
              </tr>
             <? }) ?>
       </tbody>
    
    </table>
  </body>
</html>

【问题讨论】:

    标签: javascript html google-apps-script google-sheets


    【解决方案1】:

    我认为您的脚本有 2 个修改点。 GmailApp 类的sendMail 的参数是sendEmail(recipient, subject, body, options)。因此,在您的情况下,option 用作第三个参数。我认为这就是[object Object] 的原因。并且,htmlbody 的键名必须是htmlBody。当这些点反映到你的脚本中时,它变成如下。

    发件人:

    GmailApp.sendEmail("abc@xyz.com", "Pending task on your Task List", {htmlbody: htmlEmailbody});
    

    收件人:

    GmailApp.sendEmail("abc@xyz.com", "Pending task on your Task List", "", {htmlBody: htmlEmailbody});
    
    • 在本次修改中,正文为""。所以当邮件客户端无法读取 HTML 邮件时。空的身体被看见了。请注意这一点。

    参考:

    【讨论】:

      猜你喜欢
      • 2018-07-26
      • 1970-01-01
      • 2021-08-08
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      相关资源
      最近更新 更多