【问题标题】:Google apps script html template returning empty values谷歌应用脚​​本html模板返回空值
【发布时间】:2019-02-21 23:43:37
【问题描述】:

我正在尝试从电子表格中获取数据,将其作为列表放入 html 模板中,以电子邮件的形式发送,然后以 pdf 的形式附加。在电子邮件中显示 html 时,我被挂断了。

代码.gs

function sendFormByEmail() {
  var htmlBody = HtmlService.createTemplateFromFile('formtemplate');
  var responses = SpreadsheetApp.getActiveSheet(); 
  var width = responses.getLastColumn();
  var headers = responses.getRange( 1, 1, 1, width ).getValues()[0];
  var data = responses.getRange( responses.getLastRow(), 1, 1, width ).getValues()[0];
  htmlBody.width = width;
  htmlBody.headers = headers;
  htmlBody.data = data;

  var subject = "Form Submission" ;

  // Email addresses
  var test = "email@gmail.com"; 
  var to = test; 

  // Grab template with data
  var html = htmlBody.evaluate().getContent();
  Logger.log(html);

  // Convert HTML to PDF
  var blob = Utilities.newBlob(html, "text/html", "text.html");
  var pdf = blob.getAs("application/pdf");

  // Send email and attachment
  MailApp.sendEmail( to, subject, '', {htmlBody: html, attachments: pdf}); 
};

formtemplate.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
  <ul>
  <?
   // Loop through spreadsheet responses
  for (var i = 0; i < width; i++) { ?>
  <li><strong><? headers[i] ?></strong>: <? data[i] ?>
  <? } 
  ?>
  </ul>
  </body>
</html>

我尝试过调试,所有值都出现在 html 模板中,但是当我检查 Code.gs 中的 html 变量时,我得到了空的 html 列表。包含在生成的 html 电子邮件中。知道我哪里出错了吗?我的开发人员知识相当低,我通过在线阅读和查看脚本拼凑起来。任何帮助将不胜感激。

【问题讨论】:

    标签: html google-apps-script web-applications


    【解决方案1】:

    这与HTMLService's Scriptlets 有关。在评估 HTMLTemplate 时,必须在使用变量时使用 printing scriptlets: &lt;?= data[i] ?&gt;(注意 =)。打印脚本中的代码“在将页面提供给用户之前在服务器上运行。”

    formtemplate.html

    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
      </head>
      <body>
      <ul>
      <?
       // Loop through spreadsheet responses
      for (var i = 0; i < width; i++) { ?>
      <li><strong><?= headers[i] ?></strong>: <?= data[i] ?>
      <? } 
      ?>
      </ul>
      </body>
    </html>
    

    有关更多示例,请参阅文档中this page 上的“Index.html”标签。

    【讨论】:

    • 这成功了。我有点尴尬,我设法忽略了这一点。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多