google-apps-script - 更改特定单元格时发送电子邮件
问题描述
我正在尝试构建一个项目跟踪器
- 向电子邮件列表发送电子邮件
- 电子邮件的标题是单元格 A1 中的文本
- 电子邮件正文是单元格 D1 中的文本
- 触发是当单元格 E1 的值更改为“完成”或“注意”时
到目前为止,我已经创建了一个脚本来向在特定工作表中创建的人员列表发送电子邮件。但我正在努力使用 OnEdit 功能以及如何在发送电子邮件时将单元格链接成单行。电子表格将有许多行引用不同的项目。
function sendEmails(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
var lr = ss.getLastRow();
for (var i = 2;i<=lr;i++){
var currentEmail = ss.getRange(i, 1).getValue();
var currentClassTitle = ss.getRange(i, 3).getValue();
MailApp.sendEmail(currentEmail,currentClassTitle,"Project complete");
}
}
非常感谢任何帮助和建议。
解决方案
尝试这个:
function onEdit(e){
var ss = SpreadsheetApp.getActiveSheet(); // The sheet.
var data = ss.getDataRange().getValues(); // The data in all the cells
var row = e.range.getA1Notation().substring(1);
var email = ss.getRange("A"+row).getValue();
var body = ss.getRange("D"+row).getValue();
if (e.range.getA1Notation().substring(0,1) == "E"){
if (data[row-1][4] == "Complete" || data[row-1][4] == "Attention"){
MailApp.sendEmail(email,currentClassTitle,body);
}
}
}
编辑
我修复了我的代码,它用于发送不必要的电子邮件,并且没有正确检查哪个单元格已被修改。新代码将检查编辑的单元格是否在 E 列中,以及更改是否将其设置为“完成”或“注意”。如果更改符合要求,它将向该行的电子邮件发送一封电子邮件,内容在正文行。
推荐阅读
- java - 如何处理异步调用和传输信息
- ios - For-in 循环需要“[UserVehicles]?” 符合“顺序”;你的意思是解开可选的吗?迅速
- amazon-dynamodb - 这是一个糟糕的 DynamoDB 数据库架构吗?
- python - 如何计算模糊字符串匹配中的分数?
- flutter - TextFormField 的自定义控制器在焦点移除时清除输入的文本 - Flutter
- reactjs - 如何在没有身份验证的情况下让访客访问套接字?
- docker - 使用当前用户在 Docker 中获取 /root/.zshrc
- keras - DenseNet with Keras UnknownError:无法获得卷积算法
- python - assertLog 未捕获日志记录
- python - MongoEngine fieldDoesNotExist 错误,但实际上是