使用 Google Apps 脚本自动发送电子邮件需要帮助

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

我正在寻求有关 Google Apps 脚本的帮助,我正在尝试设置该脚本以自动从 Google 表格发送电子邮件。我的目标是让脚本在我的工作表中的“状态”列更新为“发送”时自动发送电子邮件。

这是我到目前为止所做的:

我创建了一个 Google 表格,其中包含“名字”、“姓氏”、“电子邮件”和“状态”列。 我编写了一个脚本,当“状态”列更新为“发送”时,该脚本应该发送电子邮件。 但是,我遇到了脚本未按预期触发的问题。我不是开发人员,所以我发现自己解决问题很有挑战性。

有人可以检查一下我的脚本并就可能出现的问题提供指导吗?任何帮助或指示将不胜感激。

感谢您的时间和帮助。

最诚挚的问候,洪先生

我的脚本

 'function sendEmails() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var dataRange = sheet.getDataRange();
 var data = dataRange.getValues();

 for (var i = 1; i < data.length; i++) {
 var row = data[i];
 var firstName = row[0];
 var lastName = row[1];
 var emailAddress = row[2];
 var emailSent = row[3];
 if (emailSent == 'Gửi') { // Chỉ gửi email khi cột 'Status' là 'Gửi'
 var subject = 'Chủ đề Email của Bạn';
 var message = createEmailTemplate(firstName, lastName);
 MailApp.sendEmail(emailAddress, subject, "", {htmlBody: message});
 sheet.getRange(i + 1, 4).setValue('Đã gửi');
 SpreadsheetApp.flush();
 }
 }
 }

function createEmailTemplate(firstName, lastName) {
var htmlTemplate = HtmlService.createTemplateFromFile('EmailTemplate');
htmlTemplate.firstName = firstName;
htmlTemplate.lastName = lastName;
return htmlTemplate.evaluate().getContent();
}`
google-apps-script google-workspace
1个回答
0
投票

您需要将该函数命名为 onEdit,以便每当在电子表格中编辑值时自动触发在此处输入代码。

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var column = range.getColumn();
  // If the value is edited is in the status column (4th column) in the the sheet which has your data, only thencontinue with further operations.
  // Change Sheet1 to whatever is the name of your sheet.
  if (sheet.getName() !== 'Sheet1' && column == 4) {
    var dataRange = sheet.getDataRange();
    var data = dataRange.getValues();
    for (var i = 1; i < data.length; i++) {
      var row = data[i];
      var firstName = row[0];
      var lastName = row[1];
      var emailAddress = row[2];
      var emailSent = row[3];
      if (emailSent == 'Gửi') { // Chỉ gửi email khi cột 'Status' là 'Gửi'
        var subject = 'Chủ đề Email của Bạn';
        var message = createEmailTemplate(firstName, lastName);
        MailApp.sendEmail(emailAddress, subject, "", { htmlBody: message });
        sheet.getRange(i + 1, 4).setValue('Đã gửi');
        SpreadsheetApp.flush();
      }
    }
  }
}

function createEmailTemplate(firstName, lastName) {
  var htmlTemplate = HtmlService.createTemplateFromFile('EmailTemplate');
  htmlTemplate.firstName = firstName;
  htmlTemplate.lastName = lastName;
  return htmlTemplate.evaluate().getContent();
}

这应该有效。以防万一您仍然遇到困难,请让我知道日志中的确切问题/错误。

© www.soinside.com 2019 - 2024. All rights reserved.