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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于发送电子邮件的谷歌工作表脚本相关的知识,希望对你有一定的参考价值。

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

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

第二个问题是我想发送给多个收件人。在我的工作表中,我想将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 + '

' + dimension + ' ' + product + ' ' + tally + ' ' + price + ' ' + ship;
    var subject = 'PFP Lumber';
   MailApp.sendEmail("emailaddress1@blank.com",
                   "PFP Lumber",
                   message);
  }
}
答案

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

  • 似乎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 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 + '

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

Note :

  • 一个邮件地址的几条消息由 分隔。
  • 因为我不确定您要使用的每个列的变量,如果我修改的脚本的变量与您想要的不同,请修改它们。
  • 在这个修改过的脚本中,在列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 = "
---
sample signature";
  for (var i in data) {
    [emailAddress, dimension, product, tally, price, ship, city] = data[i];
    var message = city + '

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

以上是关于关于发送电子邮件的谷歌工作表脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的谷歌脚本中允许 CORS 请求?

Discord 使用 url-query 中的“代码”发送 Oauth2 重定向 url。如何在我的谷歌脚本中获取该代码

需要JS帮助 - 观看谷歌工作表专栏,通过Gmail发送更新价值的电子邮件

使用谷歌日历的谷歌数据 API 创建新活动时向客人发送电子邮件

谷歌脚本从电子表格中获取 json 数据

使用片段的谷歌地图