javascript - 我可以从选定的单元格值中显示多行吗?
问题描述
我正在建立我之前提出的问题。我的问题是我想创建一个自动电子邮件系统,当某个单元格相对于特定人进行更新时通知我。请参阅我可以根据特定更新的列和行自动从 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
我可以格式化它的外观,但我不知道如何显示同一行但更新值的不同列。
解决方案
我又来了——是的,这完全有可能。您需要做的就是将变量传递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 control
and var owner
,你就可以在你的电子邮件正文中使用它们,我也将它添加到上面的脚本中。您可以使用格式,但我基于您在问题中提供的模板。电子邮件最终应该看起来像这样(注意:'b4' 和 'h4' 只是我在单元格本身中输入的示例值):
希望这有助于实现您的目标。
推荐阅读
- javascript - 带有来自 geojson 的动态内容的 bindPopup
- jquery - 如何在 JQuery 中读取我复杂的 JSON Stringify 数据?
- jquery - ASP.net MVC Core Razor 页面和 Ajax JQuery
- c# - 根据文化更改 WPF 中的货币符号/日期时间格式
- c - sh 的原因:系统()命令未找到 1 个文件错误?在 StackOverflow 中尝试了可能的解决方案(如下所列)但失败了
- java - 当我尝试关闭 MySQL 连接时出错
- kubernetes - Cluster Autoscaler 不使用 nodeSelector 扩展
- jquery - jQuery 通过多个键过滤数据数组
- python - 如何使用 MySQL 使用经度和纬度列找到行之间的距离?
- c# - 返回菜单选择的功能;项目的切换语句