在特定 google 个工作表选项卡上编辑单元格时发送电子邮件通知
Send email notification when cell has been edited on a specific google sheets tab
我完全不熟悉编写应用程序脚本。一直试图在网上找到我的问题的答案,但不幸的是没有成功。因此,我正在向社区寻求帮助。
在我的 g sheet 中,我有两个选项卡,一个是输入选项卡 (X),另一个是输出选项卡 (Y)。我想要完成的是每次在输出选项卡 (Y) 中编辑单元格时向给定的电子邮件地址发送电子邮件通知。输出选项卡的可编辑范围为 B2:Y61。我在网上找到了很多关于“编辑中”功能的资料。但是,它们中没有一个与我的示例接近,主要是因为它们指的是 getActiveSheet 而不是特定的。代码越简单越好
例如,我发现以下post非常有趣。不幸的是不知道如何让它与特定的选项卡名称一起使用。此外,如果准确复制和粘贴,公式 returns 会出错,该行引用尚未声明。
https://spreadsheet.dev/send-email-when-google-sheet-is-edited
期待您的来信!
最好的,
D
你可以使用这个:
function onEdit(e) {
var editedSheet = e.source.getActiveSheet();
var editedCell = e.range;
var row = editedCell.getRow();
var col = editedCell.getColumn();
//Check if B2:Y61 was modified in Sheet "Y" based on its row and column index
if(row>=2 && row<=61 && col>=2 && col<=25 && editedSheet.getName()=="Y"){
//Send email
var subject = "Sheet: "+editedSheet.getName();
var message = "Cell "+editedCell.getA1Notation()+" was modified from '"+e.oldvalue+"' to '"+e.value+"'";
MailApp.sendEmail("email address",subject,message);
}
}
它有什么作用?
- 使用Google Sheets events,您可以使用
e.source
获取正在修改的活动sheet,使用e.range
获取正在修改的单元格,甚至可以获取旧的以及使用 e.oldValue
和 e.value
的单元格的新值
- 您只需要包含一个条件来检查修改的单元格是否在您喜欢的范围内
B2:Y61
应该有 min row = 2, max row = 61, min col = 2 and max col = 25 and sheet name应该是“Y”。
- 如果满足所有条件,请使用 MailApp.sendEmail() 发送电子邮件。
注:
您需要将其创建为可安装的触发器,因为它将使用需要身份验证的邮件服务。
要在脚本编辑器中 manually create an installable trigger,请按照下列步骤操作:
输出:
(更新)
此代码会将 X_input sheet 中所做的更改复制到 Y_input sheet 并检查在修改 B2:Y61 范围时是否应发送电子邮件。
function onEdit(e) {
var editedSheet = e.source.getActiveSheet();
var editedCell = e.range;
var row = editedCell.getRow();
var col = editedCell.getColumn();
var ySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Y_output");
//Check if edit is done in Sheet "X_input"
if(editedSheet.getName()=="X_input"){
//copy modified cell to Y_output sheet
ySheet.getRange(row,col).setValue(e.value);
//check if modified cell is within B2:Y61 range and send an email
if(row>=2 && row<=61 && col>=2 && col<=25){
//Send email
var subject = "Sheet: "+editedSheet.getName();
var message = "Cell "+editedCell.getA1Notation()+" was modified from '"+e.oldvalue+"' to '"+e.value+"'";
MailApp.sendEmail("ronoel@google.com",subject,message);
}
}
}
我完全不熟悉编写应用程序脚本。一直试图在网上找到我的问题的答案,但不幸的是没有成功。因此,我正在向社区寻求帮助。
在我的 g sheet 中,我有两个选项卡,一个是输入选项卡 (X),另一个是输出选项卡 (Y)。我想要完成的是每次在输出选项卡 (Y) 中编辑单元格时向给定的电子邮件地址发送电子邮件通知。输出选项卡的可编辑范围为 B2:Y61。我在网上找到了很多关于“编辑中”功能的资料。但是,它们中没有一个与我的示例接近,主要是因为它们指的是 getActiveSheet 而不是特定的。代码越简单越好
例如,我发现以下post非常有趣。不幸的是不知道如何让它与特定的选项卡名称一起使用。此外,如果准确复制和粘贴,公式 returns 会出错,该行引用尚未声明。
https://spreadsheet.dev/send-email-when-google-sheet-is-edited
期待您的来信!
最好的, D
你可以使用这个:
function onEdit(e) {
var editedSheet = e.source.getActiveSheet();
var editedCell = e.range;
var row = editedCell.getRow();
var col = editedCell.getColumn();
//Check if B2:Y61 was modified in Sheet "Y" based on its row and column index
if(row>=2 && row<=61 && col>=2 && col<=25 && editedSheet.getName()=="Y"){
//Send email
var subject = "Sheet: "+editedSheet.getName();
var message = "Cell "+editedCell.getA1Notation()+" was modified from '"+e.oldvalue+"' to '"+e.value+"'";
MailApp.sendEmail("email address",subject,message);
}
}
它有什么作用?
- 使用Google Sheets events,您可以使用
e.source
获取正在修改的活动sheet,使用e.range
获取正在修改的单元格,甚至可以获取旧的以及使用e.oldValue
和e.value
的单元格的新值
- 您只需要包含一个条件来检查修改的单元格是否在您喜欢的范围内
B2:Y61
应该有 min row = 2, max row = 61, min col = 2 and max col = 25 and sheet name应该是“Y”。 - 如果满足所有条件,请使用 MailApp.sendEmail() 发送电子邮件。
注:
您需要将其创建为可安装的触发器,因为它将使用需要身份验证的邮件服务。
要在脚本编辑器中 manually create an installable trigger,请按照下列步骤操作:
输出:
(更新)
此代码会将 X_input sheet 中所做的更改复制到 Y_input sheet 并检查在修改 B2:Y61 范围时是否应发送电子邮件。
function onEdit(e) {
var editedSheet = e.source.getActiveSheet();
var editedCell = e.range;
var row = editedCell.getRow();
var col = editedCell.getColumn();
var ySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Y_output");
//Check if edit is done in Sheet "X_input"
if(editedSheet.getName()=="X_input"){
//copy modified cell to Y_output sheet
ySheet.getRange(row,col).setValue(e.value);
//check if modified cell is within B2:Y61 range and send an email
if(row>=2 && row<=61 && col>=2 && col<=25){
//Send email
var subject = "Sheet: "+editedSheet.getName();
var message = "Cell "+editedCell.getA1Notation()+" was modified from '"+e.oldvalue+"' to '"+e.value+"'";
MailApp.sendEmail("ronoel@google.com",subject,message);
}
}
}