使用每行的单元格值在Google Spreadsheets中发送电子邮件

时间:2019-11-22 15:41:10

标签: google-apps-script google-sheets

基本上,我使用这段代码使用特定单元格上的数据将电子邮件发送给所需的收件人。

现在,考虑到我想根据其内容每行发送一封邮件,我该如何动态编写代码?从字面上看,考虑到这些行中包含一些订单数据,并且在每行的末尾都希望有一个按钮,可以在其中将特定的详细信息发送给特定的收件人。

因此,代码应根据其内容在每一行工作。例如:在第3行中,我有订单“ X”,在该行的末尾,操作员必须按第3行中包含的顺序按此“发送电子邮件”按钮,然后在第4行中与第4行相同数据等...有帮助吗?

此外,我如何像单击按钮一样在单元格中链接此代码?

PS:最后但并非最不重要的一点是,如果我必须将该行的订单详细信息发送到2个电子邮件地址,这可行吗?

function sendEmails() {
// Fetch the email address
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Ordini").getRange("G3");
var orderRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Ordini").getRange("C3");
var numorderRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Ordini").getRange("A3");
var emailAddress = emailRange.getValues();
var orderDetail = orderRange.getValues();
var numOrd = numorderRange.getValues();
// Send Alert Email.
var message = orderDetail;
var subject = 'Ordine num.' + numOrd;
MailApp.sendEmail(emailAddress, subject, message);
}

1 个答案:

答案 0 :(得分:0)

我写了一个函数,它可以完全满足您的要求。此功能将从选定的行中读取电子邮件,订单详细信息和订单号,并随后向这两者发送一封电子邮件:该行中的电子邮件和您选择的第二封电子邮件。它将使用方法offset()根据所选邮件读取行的值。这是功能:

function sendEmails() {
  var emailAddress = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
    .getActiveCell().getValue();
  var orderDetail = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
    .getActiveCell().offset(0, 1).getValue();
  var numOrd = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
    .getActiveCell().offset(0, 2).getValue();    
  var subject = 'Ordine num.' + numOrd;

  MailApp.sendEmail(emailAddress + ", second@mail.com", subject,
    orderDetail);
}

如您所见,我使用了与您的代码相同的变量名。您将必须用所需的第二封邮件(行中的另一封邮件)代替second@mail.com。使用此功能之前,必须将其链接到工作表中的按钮。无需每行使用一个按钮,只需一个按钮就足够了。为此,请按照以下步骤操作:

  1. 在工作表上,转到Insert ? Image ? Image over cells 嵌入将用作按钮的图片。
  2. 选择图片,然后点击⋮ ? Assign a script并在 对话框中所需功能的名称,不带方括号(在上一个 代码为sendEmails)。

现在一切已设置完毕。要使其正常工作,您应该选择所需行的电子邮件单元格,然后单击按钮。一封邮件将发送到两封电子邮件,并带有所需的主题和正文。拜托,如果您仍有任何疑问,请不要犹豫让我澄清。