【问题标题】:Issue with Google sheet script to email a person based on the name in a cell使用 Google 表格脚本根据单元格中的姓名向某人发送电子邮件的问题
【发布时间】:2026-02-23 10:15:01
【问题描述】:

我有一张链接到客户投诉表格的表格。我想要它,以便当投诉升级到单元格(H 列)中列出的某个人时,它会通过电子邮件向该人发送电子邮件,告诉他们他们有需要查看的问题。我取了其他人在这里编写的另一个脚本的一部分,并尝试对其进行修改以使其正常工作,但无论单元格的内容是什么,它都只会向脚本中列出的第一个人发送电子邮件。此外,有时单元格可能为空白,无需发送电子邮件。提前抱歉,我对此很陌生。

function send() {
//Sort entries so most recent is at top of spreadsheet and pause
getSpreadSheet();
Utilities.sleep(500);

//Declare global variables
  var to;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var eaddress = sheet.getRange('H2').getValue().toString();

// Determine who to email
  if (eaddress = "User 1") {
    to = "user1@company.com";
  } else if (eaddress = "User 2") {
    to = "user2@company.com";
  } else if (eaddress = "User 3") {
    to = "user3@company.com";
  } else if (eaddress = "User 4") {
    to = "user4@company.com";
  }

// Email sent

var subject = 'Customer Complaint';
var body = 'A customer complaint form has been submitted and escalated to you'
MailApp.sendEmail(to, subject, body);
}

【问题讨论】:

    标签: google-apps-script triggers google-sheets google-forms eventtrigger


    【解决方案1】:
    function send()
    {
      //Sort entries so most recent is at top of spreadsheet and pause
      getSpreadSheet();
    
      var to;
      var ss=SpreadsheetApp.getActiveSpreadsheet();
      var sheet=ss.getActiveSheet();
      var eaddress=sheet.getRange('H2').getValue();
      if(eaddress)
      {
        switch(eaddress)
        {
          case 'User 1':
            to="user1@company.com"
            break;
          case 'User 2':
            to="user2@company.com"
            break;
          case 'User 3':
            to="user3@company.com"
            break;
          case 'User 4':
            to="user4@company.com"
            break;
        }
        var subject = 'Customer Complaint';
        var body = 'A customer complaint form has been submitted and escalated to you'
        MailApp.sendEmail(to, subject, body);
      }
    }
    

    【讨论】:

      【解决方案2】:

      您的脚本中有多个问题,但最明显的一个是使用赋值运算符“=”而不是实际用于比较值的“==”和“===”。如果您想避免在 JS 中进行类型推断,请使用 'if (x == y)' 或 'if (x === y)'。

      在前一种情况下,如果比较 5(一个数字)和 '5',使用 '==' 实际上会返回 true,因为 JS 引擎会尝试将值带入相同的类型。使用 '===' 将进行比较,同时还会考虑变量类型。

      您的脚本向第一个人发送电子邮件,因为您将该电子邮件分配给脚本中的变量并且不比较任何内容。

      【讨论】:

        最近更新 更多