首页 > 解决方案 > 将从 Google 表格通过电子邮件发送数据的脚本

问题描述

我创建了一个脚本来通过电子邮件发送 Google 表格中特定范围内的数据,但这些数据一起运行。我需要对脚本进行哪些更改,以便数据在电子邮件正文或表格格式中以单独的行排列?

数据位于单元格中A5:B16,实际上是从电子表格的其他部分提取过滤数据的公式。过滤器是基于日期的过滤器,因此单元格中返回的数据A5:B15每周都会变化。我想在本周初收到一封包含新数据的电子邮件。代码“有效”,但难以阅读。我需要对脚本进行哪些更改,以便将数据安排在电子邮件正文中的单独行中?另外,如何格式化日期?

function sendEmails() {
  var recipient = 'john.doe@gmail.com'; 
  var subject = "New Hires starting this week";  
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 5;
  var numRows = 10; 
  var dataRange = sheet.getRange(startRow, 1, numRows, 2);
  var message = dataRange.getValues();
  MailApp.sendEmail(recipient, subject, message);
} 

这是电子邮件的外观:

姓名,结束日期,Jane Doe,2019 年 9 月 27 日星期五 00:00:00 GMT-0400 (EDT),约翰汉考克,2019 年 9 月 27 日星期五 00:00:00 GMT-0400 (EDT),Joe Smith,2019 年 9 月 27 日星期五00:00:00 GMT-0400 (EDT),,,,,,,,,,

标签: google-apps-scriptgoogle-sheets

解决方案


function sendEmails() {
  var recipient = 'john.doe@gmail.com'; 
  var subject = "New Hires starting this week";  
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 5;
  var numRows = 10; 
  var dataRange = sheet.getRange(startRow, 1, numRows, 2);
  var message = dataRange.getValues();
  var s='';
  for(var i=0;i<message.length;i++) {
    var dt=Utilities.formatDate(new Date(message[i][1]),Session.getScriptTimeZone(),"MM-dd-yyyy");
    s+=Utilities.formatString('%s: %s\n',message[i][0],dt);
  }
  GmailApp.sendEmail(recipient, subject, s);
} 

实用程序.formatString()

我假设您在第 1 列中有元数据,在第 2 列中有数据。如果这不正确,请告诉我它可能很容易修复。


推荐阅读