【问题标题】:Trouble sending email from edited spreadsheet从已编辑的电子表格发送电子邮件时出现问题
【发布时间】:2013-12-09 13:34:08
【问题描述】:

我正在尝试编写一个脚本,该脚本将根据电子表格上的输入向特定人员发送电子邮件。我无法发送电子邮件。我希望这个脚本能做 X 件事:

  • 监控第 4 列的任务主管姓名。
  • 根据输入的姓名向相应的潜在客户发送电子邮件。
  • 不发送重复的电子邮件。该脚本需要检查第 8 列并验证是否已发送电子邮件,如果没有,请发送电子邮件。
  • 将电子表格名称插入电子邮件主题并将第 2 列用作电子邮件的正文/消息。

这是我当前的脚本代码:

function sendEmail() {
  var emailColumn = 8;
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var row = sh.getActiveCell().getRowIndex();
  var emailSent = "Yes. Email Sent";
  var range = sh.getActiveCell();
  var taskLeads = ["noah", "tony", "larry"];
  var leadsColumn = 4;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = SpreadsheetApp.getActiveSheet();

  if (range.getColumn() == leadsColumn && range.getValue().toLowerCase() == taskLeads[0]) {
    var recipient = "email@email.com"; // email address
    var body = sh.getRange(row, 2); // Message contained in second column
    var subject = "New to do item in " + ss.getName(); //Pulls Spreadsheet name
    sh.getRange(row, 10).setValue(body);  //Testing
    sh.getRange(row, 11).setValue(subject); //Testing
    sh.getRange(row, 9).setValue(recipient); //Testing
    MailApp.sendEmail(recipient, subject, body);

    if (range.getColumn() == emailColumn && range.getValue().toLowerCase() == valueToWatch) {
      sh.getRange(row, 8).setValue(emailSent);
    }
  }
}

【问题讨论】:

  • 我知道有一些特定的功能可用于从电子表格发送电子邮件,而其他功能可用于在电子表格中实时更新单元格。我的问题最终是关于要调用的正确函数以及如何让该函数中的代码正常工作。

标签: google-apps-script google-sheets


【解决方案1】:

我使用此脚本在表单提交时向用户发送电子邮件。您可以从处理网络表单的 Google 电子表格运行它。

  var EMAIL_SENT = "Email_Sent";

function sendEmails2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var startRow = 2; //starts checking from row 2 
  var numRows = 1000; //to handle at least the first 1000 rows
  var dataRange = sheet.getRange(startRow, 1, numRows, 1000)
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0];  //gets the email address of the user in Col 1
    var message = row[1];   // gets the message from Col 2    
    var emailSent = row[2]; // writes "Email_Sent" in Col 3     
    if (emailSent != EMAIL_SENT) {  
      var subject = "Place your default subject";
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
      SpreadsheetApp.flush();
    }
  }
}

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    相关资源
    最近更新 更多