我可以显示所选单元格值中的多行吗?

时间:2019-05-30 20:22:12

标签: javascript google-apps-script google-sheets

我是根据我之前提出的问题来构建的。我的问题是我想创建一个自动化的电子邮件系统,该通知系统会在特定单元格相对于特定人员更新时通知我。请参阅我是否可以根据特定的更新的列和行自动从Google工作表发送电子邮件?为我以前的帖子。

我有代码,并且运行良好。但是,现在我希望显示已编辑行中的另一列。

是否可以显示该行中的另一列?就像X12被编辑一样。我还能显示B12和H12吗?这样可以显示我的控件ID和控件所有者?

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 = 'SUBJECT'+ ss.getSheetName();
  var name = ss.getRange(row, 9).getValue(); //get column 9 for current row
  var ControlID = e.col(2).getvalue();


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

MailApp.sendEmail({
  to: "EMAIL",
  subject: subject,
  htmlBody: "<br><br>"+
  "The following cell has been updated. <br><br>"+
  "<font size=\"2.5\" color=\"black\"><b> Cell: </b></font>" +
  cell + "<br><br>" + "Control ID: " + col +
  "<br>Update: " + cellvalue + "<br>" + 
  "<br><br>Thank you. <br>"
})
} }

因此在电子邮件中它会指出:如果X12是更新的单元格

以下控件已更新B12。所有者是H12

更新后的单元格值= X12

我可以格式化它的外观,但是我不知道如何显示更新值的同一行但另一列。

1 个答案:

答案 0 :(得分:0)

再来一次-是的,这完全有可能。您需要做的就是将变量row传递到getRange()并使用您试图从中获取值的列号。

此脚本应该可以解决问题。

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 = '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) {
    var control = ss.getRange(row, 2).getValue(); //get value for column B in current row
    var owner = ss.getRange(row, 8).getValue();   //get value for column H in current row

    MailApp.sendEmail({
      to: "EMAIL",
      subject: subject,
      htmlBody: "The following cell has been updated:<br>"+
      "<font size=\"2.5\" color=\"black\"><b> Cell: </b></font>" + cell + 
      "<br><br>" + "The following control was updated: " + control + ", the owner is: " + owner +
      "<br>Update: " + cellValue + "<br>" + 
      "<br><br>Thank you. <br>"
    });
  } 
}

我所做的只是使用getRange()添加了两个变量,就像我之前提到的那样:

var control = ss.getRange(row, 2).getValue(); //get value for column B in current row
var owner = ss.getRange(row, 8).getValue();   //get value for column H in current row

一旦您拥有var controlvar owner,就可以在电子邮件正文中使用它们,我也将它们添加到了上面的脚本中。您可以使用格式,但是我基于问题中提供的模板进行设置。电子邮件最终应该看起来像这样(注意:“ b4”和“ h4”只是我在单元格本身中输入的示例值):

Screenshot of email example

希望这有助于实现您的目标。