google-apps-script - 如果单元格匹配今天的日期,如何通过电子邮件发送几行谷歌工作表
问题描述
每天我必须通过电子邮件向几个收件人发送不同数量的谷歌工作表行(这取决于离开了多少辆卡车)。
如果单元格与今天的日期匹配,请您帮我举个例子,说明如何收集几行谷歌表格,然后通过电子邮件发送?
例如,我需要获取包含今天日期的所有行,并通过电子邮件从 A、B、C、E 列发送数据。
提前感谢您的帮助:)
解决方案
让我们一步一步来。我假设 A 列包含日期。如果不正确,请更改它:
- 声明我们将用于此的变量
function main() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = sheet.getActiveSheet();
var row_count = sheet.getLastRow() - 1;
var today = Utilities.formatDate(new Date(), "UTC", "dd.MM.yyyy"); //You can use the date format you prefer
var data = sheet.getRange("A2:E"+ (row_count + 1)).getValues(); //We get all the values from A to E and from row 2 to the last one.
countToday(sheet, today, row_count, data);
sendEmails(data);
}
- 由于我们在数据的每个位置都有每一行,因此我们会将每个日期与“今天”进行比较,并且我们将从其他日期删除(拼接)这些行。具有有效日期的行将保留在变量中:
function countToday(sheet,today, row, data){
var lastrow = "A" + (row + 1);
var col_A = sheet.getRange('A2:'+lastrow).getValues();
for (var i = row; i >= 0; i--){
if (col_A[i] != today){
data.splice(i, 1); //
}
}
}
- 现在我们得到了每一行元素,我们可以发送电子邮件了。我们将创建一个 html 表,以便更容易理解。Mailapp 函数使它变得非常简单:
function sendEmails(data){
MailApp.sendEmail({
to: "example1@mail.com" + "example2@mail.com", //You can put as many emails you want
subject: "Example",
htmlBody:"<html><body>" + createTable(data)+ "</body></html>"});
}
- 要创建 html 表,我们只需使用工作表中的列名创建一个用 html 编码的字符串。然后我们创建一个表格数组,我们将在其中拆分每个元素,
data
用逗号分隔(即每个工作表单元格)并将其添加到变量的末尾。</td> 将为我们创建行。
function createTable(data){
var cells = [];
var table = "<html><body><br><table border=1><tr><th>Date</th><th>Column B</th><th>Column C</th><th>Column D</th><th>Column E</tr></br>";
for (var i = 0; i < data.length; i++){
cells = data[i].toString().split(",");
table = table + "<tr></tr>";
for (var u = 0; u < cells.length; u++){
table = table + "<td>"+ cells[u] +"</td>";
}
}
table=table+"</table></body></html>";
return table;
}
推荐阅读
- c++ - 在单写多读的情况下,我们需要锁定 uint64_t 吗?
- javascript - 如何在父组件的多个位置渲染 React 组件的一部分(在另一个组件的中间渲染组件)
- c# - 填充无效,无法使用 AES 删除
- python - ImportError:无法从“userUpdate.models”导入名称“passUser”
- laravel - Laravel WhereHas 查询
- html - 忽略引导网格类
- html - 如何使用 jQuery 动态显示 div
- angular - 实现 ionic 的本机 HTTP 拦截器时出现打字稿错误
- c++ - 我无法理解 std::istream_iterator 的使用
- pandas - 合并 geopandas 数据框并转换为 json 会引发“达到最大递归级别”错误