首页 > 解决方案 > 使用每行的单元格值在 Google 电子表格中发送电子邮件

问题描述

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

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

因此,代码应根据其内容适用于每一行。例如:在第 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);
}

标签: google-apps-scriptgoogle-sheets

解决方案


我写了一个完全符合你要求的函数。此功能将从所选行读取电子邮件、订单详细信息和订单号,稍后将向两者发送电子邮件:行中的电子邮件和您选择的第二个电子邮件。它将使用该方法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)。

现在一切都设置好了。要使其工作,您应该选择所需行的电子邮件单元格并单击按钮。一封带有所需主题和正文的邮件将发送到两封电子邮件。如果您仍有任何疑问,请随时要求我澄清任何事情。


推荐阅读