【问题标题】:How to use html file as htmlBody?如何使用 html 文件作为 htmlBody?
【发布时间】:2017-11-27 01:41:39
【问题描述】:

如何使用html文件作为htmlBody?

我知道我可以使用 MailApp.sendEmail 发送电子邮件。 而且我知道我可以用 html 代码设置 htmlBody。 但是我的 html 代码很长并且有很多行,所以我想将它们写在一个额外的 html 文件中,而不仅仅是使用一个带有这么多“+”的 gs 文件。 我该怎么做?

【问题讨论】:

    标签: google-apps-script gmail


    【解决方案1】:

    这个示例脚本怎么样?请将此视为几个答案之一。

    当您将 HTML 正文作为 HTML 文件放入脚本编辑器时,您可以使用HtmlService.createHtmlOutputFromFile() 来实现它。示例脚本如下。

    示例脚本:

    var blob = HtmlService.createHtmlOutputFromFile("### HTML filename without extension ###").getBlob();
    MailApp.sendEmail({
      to: "### Your e-mail address ###",
      subject: "sample subject",
      htmlBody: blob.getDataAsString()
    });
    

    参考资料:

    如果我误解了你的问题,我很抱歉。

    编辑:

    如果您在运行脚本时想要更新表,可以使用此示例脚本。

    气体:

    var t = HtmlService.createHtmlOutputFromFile("### HTML filename without extension ###");
    t.data = ["sample1", "sample3", "sample3"];
    var blob = t.evaluate().getBlob();
    MailApp.sendEmail({
      to: "### Your e-mail address ###",
      subject: "sample subject",
      htmlBody: blob.getDataAsString()
    });
    

    HTML:

    <table>
      <? for (var i = 0; i < data.length; i++) { ?>
        <tr>
            <td><?= data[i] ?></td>
        </tr>
      <? } ?>
    </table>
    

    参考资料:

    【讨论】:

    • @random-parts 感谢您提供更多信息。在这种情况下,有几种方法。也可以从 Google Drive 上的文件中读取 HTML 正文。用户可以从中选择。
    • 非常感谢,这正是我所需要的。如果我需要一些动态的 html 代码怎么办?例如:填表。
    • @Zhiyong ZHOU 您可以在脚本编辑器上创建他们的 HTML 文件。因此,您可以通过选择HtmlService.createHtmlOutputFromFile(filename) 的 HTML 文件来发送邮件。如果我误解了您的评论,请告诉我。
    • @Tanaike 你可能会误解我的评论,因为我表达得不清楚。我知道如何选择 HTML 文件,但我仍然困惑的是如何更改 的 innerhtml ,因为我的html代码有标签
      ,每次运行脚本时都需要动态填充表格。
    【解决方案2】:

    有时我喜欢在 Ultraedit 中构建这些文件并将它们作为 txt 文件存储在 google 驱动器上,然后我将它们提取为 html 字符串,如下所示。

    MailApp.sendEmail({
      to: emailaddress,
      subject: subject,
      htmlBody: loadMyFile(filename,folderID)}
    );
    
    function loadMyFile(filename,folderID){
      var fldr=DriveApp.getFolderById(folderID);
      var file=fldr.getFilesByName(filename);
      while(file.hasNext()){
        var fi=file.next();
        var target=fi.getName();
        if(target==filename){
          var s=fi.getBlob().getDataAsString();
        }
      }
      return s;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 2018-10-14
      • 2020-08-15
      • 2017-01-11
      相关资源
      最近更新 更多