循环到带有Google脚本和HTML模板的项目符号点

问题描述

我正面临的问题:

我有一个包含单元格的电子表格,该单元格将填充通过Google Apps脚本发送电子邮件的HTML模板。这些单元格链接到HTML模板中的项目符号列表,根据这些单元格中是否包含信息,我希望其长度在1-6个项目符号之间。我目前正在努力寻找一种方法来循环这些单元,而在最终电子邮件中不包含空白的项目符号。

我已经研究了各种类似的方法,但是没有什么办法能够完全满足我脚本中必要的循环和项目符号的需要。

以下是一些相关代码

 template.tweb = web.getRange(1,1).getValue();
 template.tweb1 = web.getRange(2,1).getValue();
 template.tweb2 = web.getRange(3,1).getValue();    
 template.tweb3 = web.getRange(4,1).getValue();
 template.tweb4 = web.getRange(5,1).getValue();
 template.tweb5 = web.getRange(6,1).getValue();

我目前没有循环设置它,因为我无法获得比最后一行更多的内容来填充HTML模板。

这是HTML代码

<p><strong>Website Development</strong></p>
<em>Weekly Highlights</em>
<br>
<ul>
 <li>The Website Development team completed the following:</li>
  <ul><li> <?= tweb ?></li></ul>
  <ul><li> <?= tweb1 ?></li></ul>
  <ul><li> <?= tweb2 ?></li></ul>
  <ul><li> <?= tweb3 ?></li></ul>
  <ul><li> <?= tweb4 ?></li></ul>
  <ul><li> <?= tweb5 ?></li></ul>

此外,这是我失败的循环代码的示例:

var e = pr.getLastRow();
 for (var i = 1; i < e+1 ; i++ ) {
 var tpr = pr.getRange(i,1).getValue();
 }
   template.tpr = tpr;
<p><strong>Public Relations</strong></p>
<em>Weekly Highlights</em>
<ul>
 <li><?= tpr ?></li>
</ul>

谢谢您的帮助!

解决方法

您的最佳选择是使用Apps Script scriptlets

它们允许您动态创建html,并将循环和语句与html代码集成。

示例:

Code.gs

function doGet() {
  var template = HtmlService.createTemplateFromFile("index");
  return template.evaluate();
}

function getData() {
  var web = SpreadsheetApp.getActive().getActiveSheet();
  return web.getRange(1,1,6,1).getValues();
}

index.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <p><strong>Website Development</strong></p>
<em>Weekly Highlights</em>
<br>
<ul>
 <li>The Website Development team completed the following:</li>
  <? var data = getData(); ?>
   <? for (var i = 0; i < data.length; i++) { ?>
     <? if (data[i][0]!="" && data[i][0]!=" ") { ?>
       <ul><li> <?= data[i][0] ?></li></ul>
     <? } ?>
   <? } ?>
  </ul>
  </body>
</html>