google-apps-script - 在谷歌表格中获取动态范围
问题描述
我有一个函数可以获取表格的范围,然后每天通过电子邮件发送。目前它被设置为获得一个固定的范围 (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>';
}
解决方案
在您的第二个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>';
}
推荐阅读
- javascript - Gravity Forms Datepicker - 限制天数 - 代码仅在按下提交后有效?
- apache - AxisFault:从某些客户端(例如 Docuware)调用时出现命名空间不匹配错误
- unity3d - OnMouseDown 事件在相机视口外收到,其中对象不可见
- python - “int”对象没有属性“uniform”
- angular - 如何将幻灯片添加到引导轮播
- vba - 如何使用用户窗体上的按钮来清除内容控制框的内容
- php - Laravel - 将请求重定向到外部 url 并将其响应作为响应返回
- r - 不确定如何使用反应值
- java - RabbitMQ - 我如何捕捉 ForgivingExceptionHandler?
- python - 如何使用 multiprocessing.pool、multiprocessing.event 和 multiprocessing.terminate 来运行这个特定的程序