我可以根据特定更新的列和行自动发送 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) {
我想知道你是否可以帮助我。我知道这段代码是不完整的,它有点像我根据许多其他人的问题制作的科学怪人的作品。我只是找不到我要找的东西。我不知道 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) {