从 Google 表格中获取数据并在 Gmail 中创建包含收件人、主题和正文的电子邮件

Grab data from Google Sheets and create emails in Gmail with recipients, subject and body based on it

我有一个 sheet,其中包含必须用作 gmail 中电子邮件的输入参数的数据。 Here is an example sheet,但基本上就是这样:

因此,电子邮件必须复制给 A 列(“电子邮件”)中的人员,它应该有一个定义的主题,在 B2 上,在 C2 上有一个定义的正文。

有没有办法创建一个 Appscript,将 Google 表格连接到 Gmail 并创建如下所示的电子邮件?您能否建议基于 example sheet?

的脚本

使用 App Script 发送电子邮件只需要一行

MailApp.sendEmail(emailAddress, subject, message);

您的工作表中包含所有这些必需的信息,您可以提取这些信息。

您可以使用下面的代码。只需更改电子表格 URL。 这通过从第 2 行开始循环遍历行直到包含数据的行来获取电子邮件地址、主题和消息。

function sendMultipleEmails(){
  var ss = SpreadsheetApp.openByUrl('<your_SpreadSheetURL>');
  var sheet = ss.getSheetByName('Sheet1');

  var n = sheet.getLastRow();
  //loop through rows with data
  for (i = 2; i < n+1; i++){
    var emailAddress = sheet.getRange(i, 1).getValue();
    var subject = sheet.getRange(i,2).getValue();
    var message = sheet.getRange(i,3).getValue();
    MailApp.sendEmail(emailAddress,subject,message);
  }
};

只需将此功能分配给您的按钮即可。

我有一个可能适合您的示例代码,它会获取电子邮件的行并发送不同的电子邮件:

function sendEmail() {

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet4');
var n=sheet1.getLastRow();
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,1).getValue();
var subject = sheet1.getRange(i,2).getValue();
var message = sheet1.getRange(i,3).getValue();
MailApp.sendEmail(emailAddress, subject, message);
}

}

通过插入 Google 绘图:

您通过“插入”>“绘图”菜单添加按钮。

你编辑绘图,完成后,点击三个点并分配一个脚本,你只需要写函数名称,在我的例子中是

sendEmail

你可以看看 Sheet 和它的外观,与你的非常相似。

此外,如果您只想向 A 列中的所有电子邮件发送模板电子邮件,则可以使用此电子邮件:

function sendEmail() {

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet4');
var sheet2=ss.getSheetByName('somesheet');
var subject = sheet2.getRange(2,1).getValue();;
var message = sheet2.getRange(2,2).getValue();
var n=sheet1.getLastRow();
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,1).getValue();
MailApp.sendEmail(emailAddress, subject, message);
}

}

注:

-为了使用模板示例,我使用了两个工作簿或工作表。

尝试

function sendEmail() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var emailAddress = sh.getRange('A2:A'+sh.getLastRow()).getValues().join();
  var subject = sh.getRange('B2').getValue();
  var message = sh.getRange('C2').getValue();
  MailApp.sendEmail(emailAddress, subject, message);
}

您可以添加自定义菜单而不是按钮

function onOpen() {
  SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
    .addItem(' send emails', 'sendEmail')
    .addToUi();
}