【问题标题】:Javascript/GAS- Googlesheet to HTML table- Taking only first columnJavascript/HAS- 谷歌表格到 HTML 表格 - 只取第一列
【发布时间】:2020-07-06 10:01:53
【问题描述】:

我有一个代码可以读取谷歌表格并应该将数据带到 HTML 表中。

function Getdata(){

const ss= SpreadsheetApp.getActiveSpreadsheet();
const ws= ss.getSheetByName("Projects");
const headers= ws.getRange("A1:F").getValues();
const Project_State = headers[0][0];
const Start_Date = headers[0][1];
const End_Date = headers[0][2];
const Project_ID = headers[0][3];
const Project_Name = headers[0][4];
const Project_Code = headers[0][5];
const First_Name = headers[0][8];

const lr = ws.getLastRow();
const tableRangeValues=ws.getRange(2,1, lr-2).getDisplayValues();

const htmlTemplate = HtmlService.createTemplateFromFile("Notify") 
htmlTemplate.Project_State= Project_State;
htmlTemplate.Start_Date= Start_Date;
htmlTemplate.End_Date= End_Date;
htmlTemplate.Project_ID= Project_ID ;
htmlTemplate.Project_Name=Project_Name;
htmlTemplate.Project_Code=Project_Code;
htmlTemplate.First_Name=First_Name;
htmlTemplate.tableRangeValues=tableRangeValues;

const htmlForEmail = htmlTemplate.evaluate().getContent();

MailApp.sendEmail({
to: Session.getActiveUser().getEmail(),
subject: 'Project End - Action Required',
htmlBody: htmlForEmail,
  });
}

根据我所做的研究,我已经能够在通过电子邮件发送的 HTML 表中显示工作表的标题,但是我在将行数据从工作表捕获到 HTM 表时遇到了挑战。我不确定我的范围是否关闭,或者我错过了什么。问题是,我只能将第一列数据放入我的 HTML 表中。

这是我的 HTML 代码:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
        
    <title>Weekly Report</title>
    
  </head>
  <body style="padding:3em;">

<p>Hi Project Leader,</p>
<p>please see below for the latest updates on the projcets you manage.<br>
<br /> Team</p>
<div style=""background-color:blue; height:4px;></div>
<h3> Project Details </h3>
<table>
<thead>
<tr>
<th><?= Project_State ?></th>
<th><?= Start_Date ?></th>
<th><?= End_Date ?></th>
<th><?= Project_ID ?></th>
<th><?= Project_Name?></th>
<th><?= Project_Code ?></th>
</tr>
</thead>
<tbody>
<?tableRangeValues.forEach(r=>{?>
<tr>
<td><?=r[0]?></td>
<td><?=r[1]?></td>
<td><?=r[2]?></td>
<td><?=r[3]?></td>
<td><?=r[4]?></td>
<td><?=r[5]?></td>
</tr>
<?})?>
</tbody>
</table>
<br>

</body>
</html>

这是 google sheet 的结构。

【问题讨论】:

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


    【解决方案1】:

    为了检索包含“A”到“F”列的行,我想提出以下修改。

    发件人:

    const tableRangeValues=ws.getRange(2,1, lr-2).getDisplayValues();
    

    收件人:

    const tableRangeValues=ws.getRange(2,1, lr-2, 6).getDisplayValues();
    
    • 在您的脚本中,getRange(2,1, lr-2) 是“A2:A”的单元格,但底行除外。为了检索列“A”到“F”,我将其修改为getRange(2,1, lr-2, 6)。在这种情况下,范围是“A2:F”的单元格,但底行除外。

    • 如果要检索从第2行到最后一行的行,请进行如下修改。

      • 来自

          const tableRangeValues=ws.getRange(2,1, lr-2).getDisplayValues();
        
      •   const tableRangeValues=ws.getRange(2,1, lr-1, 6).getDisplayValues();
        

    参考资料:

    【讨论】:

    • 感谢这对我来说很好。最后一个问题是试图在 html 部分设置条件,如果结束日期小于当前日期,则 HTML 表 &lt;th&gt;&lt;?= End_Date ?&gt;&lt;/th&gt; 上的行应为红色,即表值上的 &lt;td&gt;&lt;?=r[2]?&gt;&lt;/td&gt;。我该怎么办?
    • @willy 感谢您的回复。我很高兴你的问题得到了解决。关于你的新问题,我想支持你。但不幸的是,我无法从您的回复中了解您想要做什么。我为我糟糕的英语水平深表歉意。而且,您的新问题与您的这个问题不同。因此,为了正确理解您的新问题,您可以通过包含更多信息将其作为新问题发布吗?借此,我想确认一下。如果您能合作解决您的新问题,我很高兴。
    • 嗨@Tanaike,感谢您的回复。我已经在这里link发布了这个问题,如果可以的话,请帮助我。谢谢
    • @willy 感谢您的回复。我会查一下。当我能理解你的新问题时,我想考虑解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多