Google Apps 脚本电子邮件通知无法正常运行
Google Apps Script Email Notification Not Functioning Correctly
我真的需要一些帮助,我非常感谢任何人能提供的任何指示。我知道还有一些其他相似 的问题,但据我所知,没有其他人有这个具体 issue/request。
我有一个 Google Sheet 三个不同的人合作完成的。我有这个通知脚本,它将通过电子邮件通知特定用户有关 F 列中任何单元格的 any 更改。重要的是,此电子邮件通知还包含该行中 F 单元格值已更改的 A 单元格的值。
但是,我真正想要实现的是一个通知脚本,当 F 列中的任何单元格的新值为 [=28] 时,它将仅 向指定人员发送电子邮件=] 在大师 Sheet2 中 sheet.
我目前的代码是(当 F 列发生任何变化时发送通知):
function sendNotification(e) {
var received = e.value; //Gets the value of the edited cell
};
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet 2");
var cell = ss.getActiveCell().getA1Notation();
var row = sheet.getActiveRange().getRow();
var cellvalue = ss.getActiveCell().getValue().toString();
var received = ss.getRange('F2:F').getValue();
var recipients = "example@gmail.com";
var message = '';
if(received==="Yes"){
message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»';
MailApp.sendEmail(recipients, subject, body)};
Logger.log('received value: ' + received);
};
要设置事件对象,请使用:
function sendNotification(e) {
var received = e.value; //Gets the value of the edited cell
};
发送电子邮件的代码在 if
正文的 之外。因此,无论如何都会发送电子邮件。
改为:
if(received==="Yes"){
message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»';
MailApp.sendEmail(recipients, subject, body);
};
在这行代码中:
if(received="Yes"){
您正在使用赋值运算符来检查相等性。使用两个或三个等号进行相等性检查。
应该是:
if(received==="Yes"){
如果有帮助,下面是在我的测试中有效的代码:(设置一个可安装的触发器以使其工作)
注意:我在这里和那里添加了几个 Logger.log
来检查变量和 Browser
消息以避免在测试时发送邮件。
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet 2");
var cell = ss.getActiveCell();
var row = sheet.getActiveRange().getRow();
var col = cell.getA1Notation().replace(/[0-9]/g,'').toLowerCase();
Logger.log('col = '+col);
var cellValue = cell.getValue().toString().toLowerCase();
Logger.log(cellValue);
var recipients = "example@gmail.com";
var message = '';
Logger.log(cellValue=="yes" && col=='f');
if(cellValue=="yes" && col=='f' ){
message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellValue + '». For message: «' + message + '»';
// MailApp.sendEmail(recipients, subject, body)
Browser.msgBox('mail sent');
}
Logger.log('message body: ' + body);
};
我真的需要一些帮助,我非常感谢任何人能提供的任何指示。我知道还有一些其他相似 的问题,但据我所知,没有其他人有这个具体 issue/request。
我有一个 Google Sheet 三个不同的人合作完成的。我有这个通知脚本,它将通过电子邮件通知特定用户有关 F 列中任何单元格的 any 更改。重要的是,此电子邮件通知还包含该行中 F 单元格值已更改的 A 单元格的值。
但是,我真正想要实现的是一个通知脚本,当 F 列中的任何单元格的新值为 [=28] 时,它将仅 向指定人员发送电子邮件=] 在大师 Sheet2 中 sheet.
我目前的代码是(当 F 列发生任何变化时发送通知):
function sendNotification(e) {
var received = e.value; //Gets the value of the edited cell
};
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet 2");
var cell = ss.getActiveCell().getA1Notation();
var row = sheet.getActiveRange().getRow();
var cellvalue = ss.getActiveCell().getValue().toString();
var received = ss.getRange('F2:F').getValue();
var recipients = "example@gmail.com";
var message = '';
if(received==="Yes"){
message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»';
MailApp.sendEmail(recipients, subject, body)};
Logger.log('received value: ' + received);
};
要设置事件对象,请使用:
function sendNotification(e) {
var received = e.value; //Gets the value of the edited cell
};
发送电子邮件的代码在 if
正文的 之外。因此,无论如何都会发送电子邮件。
改为:
if(received==="Yes"){
message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»';
MailApp.sendEmail(recipients, subject, body);
};
在这行代码中:
if(received="Yes"){
您正在使用赋值运算符来检查相等性。使用两个或三个等号进行相等性检查。
应该是:
if(received==="Yes"){
如果有帮助,下面是在我的测试中有效的代码:(设置一个可安装的触发器以使其工作)
注意:我在这里和那里添加了几个 Logger.log
来检查变量和 Browser
消息以避免在测试时发送邮件。
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet 2");
var cell = ss.getActiveCell();
var row = sheet.getActiveRange().getRow();
var col = cell.getA1Notation().replace(/[0-9]/g,'').toLowerCase();
Logger.log('col = '+col);
var cellValue = cell.getValue().toString().toLowerCase();
Logger.log(cellValue);
var recipients = "example@gmail.com";
var message = '';
Logger.log(cellValue=="yes" && col=='f');
if(cellValue=="yes" && col=='f' ){
message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellValue + '». For message: «' + message + '»';
// MailApp.sendEmail(recipients, subject, body)
Browser.msgBox('mail sent');
}
Logger.log('message body: ' + body);
};