我是根据我之前提出的问题来构建的。我的问题是我想创建一个自动化的电子邮件系统,该通知系统会在特定单元格相对于特定人员更新时通知我。请参阅我是否可以根据特定的更新的列和行自动从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
我可以格式化它的外观,但是我不知道如何显示更新值的同一行但另一列。
答案 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 control
和var owner
,就可以在电子邮件正文中使用它们,我也将它们添加到了上面的脚本中。您可以使用格式,但是我基于问题中提供的模板进行设置。电子邮件最终应该看起来像这样(注意:“ b4”和“ h4”只是我在单元格本身中输入的示例值):
希望这有助于实现您的目标。