我可以根据特定更新的列和行自动发送 google 工作表中的电子邮件吗?

Can I automate an email off google sheets based on specific updated columns and rows?

我想知道你是否可以帮助我。我知道这段代码是不完整的,它有点像我根据许多其他人的问题制作的科学怪人的作品。我只是找不到我要找的东西。我不知道 Java 并且我是 google sheets 和 google-apps-scripts

的新手

问题:我想构建一个脚本,当一个 spreadsheet 更新时,它会自动给我发送一封电子邮件,并告诉我什么 Cell 被更新了。我遇到的问题是我需要它满足某些标准。 例如,如果列 i = "Name" 和该行的列 w、x、ae 或 af 中的单元格值被更新或更改。然后发送一封自动发送的电子邮件。

如果你们能提供帮助,我将不胜感激。

谢谢!

我尝试了一个导入范围,并只过滤了我需要的人和我需要的列,但我遇到的障碍是,当它更新时,它会更新包含导入范围公式的单元格。我也读过它也可能不一致。

function sendNotification(e){
  var ss = SpreadsheetApp.getActive().getSheetByName('Datasheet');
  //var gg = ss.getActiveCell().getValue().toString().getFilter('Person');
  //var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var row = ss.getActiveRange().getRow();
  var column = ss.getActiveRange().getColumn().toString();
  var cellvalue = ss.getActiveCell().getValue().toString();
  var subject = '____ '+ ss.getName();
  var lastColumn = ss.getLastColumn();
  var lastRow = ss.getLastRow();
  var range = ss.getRange(1,1,lastRow,lastColumn);

  MailApp.sendEmail({
    to: "Email@gmail",
    subject: subject,
    htmlBody: "<br><br>"+
    "The following cell has been updated. <br><br>"+
    "<font size=\"3\" color=\"black\"><b> Cell: </b></font>" +
    cell + "<br><br>" +
    "The update was the following: " + cell + "<br>" + "<br><br>" + 
    "Column: " + column + "<br>Updated Cell: " + cellvalue + "<br><br>" + 
    "<br><br>Thank you. <br>"
  });
};

所以我希望能够过滤掉更新的特定人员和特定列。目前我正在尝试使用新的 sheet 中的导入范围。当我更新主列表时,我收到一封电子邮件,告诉我它已更新。但更新后的单元格是包含导入范围公式的单元格。如果我可以筛选出我需要的内容,我很乐意将代码直接插入主列表。

您需要一个 if 语句来实现您的目标。我还更改了很多变量以使用 e 事件对象,这使得获取已编辑的范围等变得更加容易。

function sendNotification(e){
  var ss = e.source.getSheetByName('Datasheet');
  var cell = e.range.getA1Notation();
  var row = e.range.getRow();
  var col = e.range.getColumn();
  var cellvalue = e.range.getValue();
  var subject = '____ '+ ss.getSheetName();
  var name = ss.getRange(row, 9).getValue(); //get column 9 for current row

  if (name === 'Name' && (col === 23 || col === 24 || col === 31 || col === 32) === true) {

    MailApp.sendEmail({
      to: "Email@gmail",
      subject: subject,
      htmlBody: "<br><br>"+
      "The following cell has been updated. <br><br>"+
      "<font size=\"3\" color=\"black\"><b> Cell: </b></font>" +
      cell + "<br><br>" +
      "The update was the following: " + cell + "<br>" + "<br><br>" + 
      "Column: " + col + "<br>Updated Cell: " + cellvalue + "<br><br>" + 
      "<br><br>Thank you. <br>"
    })
  }
}

if 语句检查以确保变量 name(我从你的问题中按字面意思理解),即第 I 列,设置为 'Name'。我是按字面意思理解的,但您可以将此检查更改为任何您希望 运行 的脚本。然后它会检查 W、X、AE 或 AF 列是否已更新,如果两个条件都匹配则发送电子邮件。

if (name === 'Name' && (col === 23 || col === 24 || col === 31 || col === 32) === true) {