关于发送电子邮件的谷歌工作表脚本

时间:2018-03-04 21:12:26

标签: email google-sheets automation

我认为这很容易解决,但我无法在网上找到解决方案。

我在运行脚本时尝试发送自动发送的电子邮件。问题是它会为每一行发送一封电子邮件(多封电子邮件发送给同一个人),而不是发送一封包含在该电子邮件中的每一行/每一行的电子邮件。

第二个问题是我想发送给多个收件人。在我的工作表中,我想将B2:F3中的数据发送到第一个电子邮件地址,然后我想将B4:F5发送到提供的第二封电子邮件。

感谢您的帮助。 - 杰瑞德

这是我的剧本:

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName("sheet1"));
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange("A2:m8");
  var data = dataRange.getValues();
  for (i in data) {
    var rowData = data[i];
    var emailAddress = rowData[0];
    var city = rowData[11];
    var dimension = rowData[1];
    var product = rowData[2];
    var tally = rowData[3];
    var price = rowData[5];
    var ship = rowData[5];
    var message = city + '\n\n' + dimension + ' ' + product + ' ' + tally + ' ' + price + ' ' + ship;
    var subject = 'PFP Lumber';
   MailApp.sendEmail("emailaddress1@blank.com",
                   "PFP Lumber",
                   message);
  }
}

1 个答案:

答案 0 :(得分:0)

从您的共享样本表和脚本中,有一些问题。

  • 似乎priceshiprowData[5]
    • priceship分别是rowData[4]rowData[5]
  • 似乎rowData[11]Phone
    • 这是rowData[6]吗?

如果priceshipPhone分别为rowData[4]rowData[5]rowData[6],您希望发送以下电子邮件。

  

邮件1:   mailaddress:emailaddress1@blank.com

     消息:Gulfport desc1 1 1 1 1,Gulfport desc2 2 2 2 2

     

邮件2:   mailaddress:emailaddress2@blank.com

     消息:Gulfport desc3 3 3 3 3,Gulfport desc4 4 4 4 4

如果我的理解是正确的,那么这个修改怎么样?我认为你的情况有几个答案,所以请把它当作其中之一。

修改要点:

  • 检索电子邮件地址和邮件。
    • 如果未在A栏找到新的电子邮件地址,则会添加该消息。
    • 当在A栏找到新的电子邮件地址时,电子邮件将被分开。

修改后的脚本:

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName("sheet1"));
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange("A2:m8");
  var data = dataRange.getValues();

  // Modified
  var temp = [];
  var emailAddress, dimension, product, tally, price, ship, city;
  for (var i in data) {
    [emailAddress, dimension, product, tally, price, ship, city] = data[i];
    var message = city + '\n\n' + dimension + ' ' + product + ' ' + tally + ' ' + price + ' ' + ship;
    if (emailAddress || !dimension) {
      if (temp.length > 0) {
        MailApp.sendEmail(temp[0], "PFP Lumber", temp.slice(1,temp.length).join("\n"));
        var temp = [];
      }
      temp.push(emailAddress, message);
      if (!dimension) break;
    } else {
      temp.push(message);
    }
  }
}

注意:

  • 一个邮件地址的多条消息由\n分隔。
  • 由于我不确定您要使用的每个列的变量,如果我修改过的脚本的变量与您想要的不同,请修改它们。
  • 在此修改后的脚本中,在B列的Dimension为空的行之后,我发现您没有要发送的电子邮件。

如果我误解了你的问题,我很抱歉。

编辑:

如果要添加签名,该脚本怎么样?

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName("sheet1"));
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange("A2:m8");
  var data = dataRange.getValues();

  var temp = [];
  var emailAddress, dimension, product, tally, price, ship, city;
  var signature = "\n---\nsample signature";
  for (var i in data) {
    [emailAddress, dimension, product, tally, price, ship, city] = data[i];
    var message = city + '\n\n' + dimension + ' ' + product + ' ' + tally + ' ' + price + ' ' + ship;
    if (emailAddress || !dimension) {
      if (temp.length > 0) {
        MailApp.sendEmail(temp[0], "PFP Lumber", temp.slice(1,temp.length).join("\n") + signature);
        var temp = [];
      }
      temp.push(emailAddress, message);
      if (!dimension) break;
    } else {
      temp.push(message);
    }
  }
}