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

问题描述 投票:0回答:1

我认为这将是一个简单的解决方案,但我一直无法在网上找到解决方案。

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

第二个问题是我想发送给多个收件人。在我的工作表中,我想将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("[email protected]",
                   "PFP Lumber",
                   message);
  }
}
email google-sheets automation
1个回答
0
投票

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

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

如果priceshipPhone分别是rowData[4]rowData[5]rowData[6],你想发送以下电子邮件。

邮件1:mailaddress:[email protected]

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

邮件2:mailaddress:[email protected]

消息:Gulfport desc 3 3 3 3 3,Gulfport desc 4 4 4 4 4

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

Modification points :

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

Modified script :

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);
    }
  }
}

Note :

  • 一个邮件地址的几条消息由\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);
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.