发送包含电子表格数据的电子邮件

时间:2018-03-09 16:57:39

标签: google-apps-script google-sheets

我目前正在尝试编写一个Apps脚本功能,可以在编辑Google表格时发送电子邮件。我目前的问题是该功能只发送一列数据,我需要它发送库存的日期和数量。这就是我现在所拥有的,我想我可能需要一个嵌套循环才能使函数打印两列。任何帮助都会很棒!

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(2, 1, 4, 2);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  //var data = dataRange.getSheetValues();
  for (i in data) {
    var row = data[i];
    var message = row[1];       // Second column
    var subject = "Inventory update";
    MailApp.sendEmail("test@test.com", subject, message);
  }
}

2 个答案:

答案 0 :(得分:1)

在上面的代码中,来自范围"A2:B5"的单元格的值存储在可变数据中的数组格式数组中,即

var data = dataRange.getValues(); //This code results in the below
data = [["A2","B2"],
        ["A3","B3"],
        ["A4","B4"],
        ["A5","B5"]]

其中A2对应于单元格A2的值,B2对应于单元格B2,依此类推。要访问第一行,您需要执行以下操作:

data[0] => ["A2","B2"]

注意: data [0]返回另一个包含第1行所有元素的数组。另外,请注意编号从0开始而不是从1开始 现在要访问第一行的第一个元素,您将执行以下操作:

data[0][0] => "A2"

上面的代码与你的代码相似

var row = data[i]; where i = 0
row => ["A2","B2"]

因此,要获得第一列,你会做

row[0]  => "A2"

获取你要做的第二列

row[1]  => "B2"

修改您的消息变量,使其如下所示

message = message + row[0] +","+row[1]"\n"

使用逗号分隔符和\n新换行符将新行添加到上一封邮件的位置。

截至目前,您的邮件应用每行发送一封电子邮件。但是,我不相信这是预期的行为。以下是您修改后的代码

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(2, 1, 4, 2);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  //var data = dataRange.getSheetValues();
  var message =""  //empty string
  //Loop through each row and form CSV data
  for (var i=0;i<data.length;i++) {  //edited because:https://stackoverflow.com/questions/500504/why-is-using-for-in-with-array-iteration-a-bad-idea
    var row = data[i];
    message = message + row[0] +","+row[1]"\n"   
  }
  // Send one email with all the rows
  var subject = "Inventory update"; 
  MailApp.sendEmail("test@test.com", subject, message);
}

答案 1 :(得分:0)

最初的问题不是坚持采用编码解决方案。 因此,使用此Gsheet插件,无需代码即可完成您的确切用例:

https://reactor.isvery.ninja/

请参阅底部的教程视频(从电子表格发送电子邮件)