首页 > 解决方案 > 在谷歌表格中获取动态范围

问题描述

我有一个函数可以获取表格的范围,然后每天通过电子邮件发送。目前它被设置为获得一个固定的范围 (G2:H38)。该过程目前有效,但每天我发送电子邮件,我都有一些空白单元格也被发送出去。我是新手,希望有人能帮我解决这个问题。

var rowData = data[i];
    var emailAddress = "example@gmail.com";
    var recipient = rowData[0];
    var yesterdayDate = rowData[5];
    var message1 = rowData[2] + yesterdayDate;
    var message2 = rowData[3]
    var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var data = sh.getRange("G2:H38").getValues();
    //var htmltable =[];
    var TABLEFORMAT = 'cellspacing="2" cellpadding="2" dir="ltr" border="1" style="width:100%;display:table;max-width:400px;table-layout:fixed;font-size:10pt;font-family:arial,sans,sans-serif;border-collapse:collapse;border:1px solid #ccc;font-weight:normal;color:black;background-color:white;text-align:center;text-decoration:none;font-style:normal;margin-top:30px'
    var htmltable = '<table ' + TABLEFORMAT +' ">';
    var tablehead = 'style="background-color:#6aa84f;color:white;';

      for (row = 0; row<data.length; row++){
        htmltable += '<tr>';
      for (col = 0 ;col<data[row].length; col++){
        if (data[row][col] === "" || 0) {htmltable += '<td>' + '' + '</td>';} 
          else
            if (row === 0)  {
              htmltable += '<th ' + tablehead +' ">' + data[row][col] + '</th>';
            }

          else {htmltable += '<td>' + data[row][col] + '</td>';}
      }
     htmltable += '</tr>';
      }

标签: google-apps-scriptgoogle-sheets

解决方案


在您的第二个for循环中,第一个条件为其中没有数据的单元格值捕获并附加空表单元格。在此处添加0检查无济于事,因为您应该检查data[row][col]===0是否要匹配等于0,而不是的值||0

否则,您的代码将按预期工作并在示例上对其进行测试Spreadsheet- “如果 Range 中的单元格为空,则将空单元格附加到表中”。是否要过滤掉所有空单元格?

更新

我仍然不确定您为什么要从 中过滤掉空单元格HtmlTable,但是如果您只想显示带有数据的单元格,请if...else稍微更改您的语句以解决此问题:

if (row===0&&data[0][col]!=='')  { //filter out empty header cells;
  htmltable += '<th>' + data[row][col] + '</th>';
}else if(data[row][col]!=='') { //filter out empty entries cells
  htmltable += '<td style="border:1px solid black;">' + data[row][col] + '</td>';
}

推荐阅读