首页 > 解决方案 > 我可以从选定的单元格值中显示多行吗?

问题描述

我正在建立我之前提出的问题。我的问题是我想创建一个自动电子邮件系统,当某个单元格相对于特定人进行更新时通知我。请参阅我可以根据特定更新的列和行自动从 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

更新后的 Cellvalue = X12

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

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


我又来了——是的,这完全有可能。您需要做的就是将变量传递row给 agetRange()并使用您尝试从中获取值的列的编号。

这个脚本应该可以解决问题。

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 controland var owner,你就可以在你的电子邮件正文中使用它们,我也将它添加到上面的脚本中。您可以使用格式,但我基于您在问题中提供的模板。电子邮件最终应该看起来像这样(注意:'b4' 和 'h4' 只是我在单元格本身中输入的示例值):

电子邮件示例的屏幕截图

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


推荐阅读