google-apps-script - 我需要一个脚本,它会在单元格值更改时自动触发 sendEmail 函数
问题描述
我编写了一个代码,其中函数 sendEmail 发送一封电子邮件,该电子邮件出现在我的谷歌表格的单元格 E9 中,该表格链接到我网站中的表格。当一个新用户输入他/她的电子邮件时,电子邮件会反映在我的谷歌表格的单元格 E9 中。之后我必须手动运行应用程序脚本才能成功地将电子邮件发送到单元格 E9 中存在的邮件 ID。我希望这是自动的,这样我就不必在每次用户输入新电子邮件时手动运行应用程序脚本。请建议一个我对这些代码知之甚少的应用程序脚本,因此完整的可执行代码将有很大帮助。谢谢
function sendEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var emailAddress = sheet1.getRange(9,5).getValue();
var subject = "Checking the app script"
var message = "Checking the app script working from indigenious id and drive link https://drive.google.com/file/d/1MdoADqSeudMwMruLJUU32OA5bdtyweiv/view?usp=sharing "
MailApp.sendEmail(emailAddress, subject, message);
}
解决方案
您需要在可安装的 onEdit 触发器上设置您的功能
onEdit
在电子表格中进行编辑时触发触发(例如,用户在单元格中输入值)- 当事件触发触发器时,它们会自动运行您的功能
- 它们允许您检索与编辑相关的事件对象,例如已编辑的单元格和已输入的值 - 请参阅此处以获取可用的 Google 表格事件
Edit
- 由于简单触发器的限制,您需要使用可安装版本才能发送电子邮件
- 如此处所述,将触发器绑定到您的函数
修改您的代码以在触发器上运行(请注意,由于使用事件对象,如果您尝试通过按“播放”按钮手动运行此代码将出错):
function sendEmail(e) {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
if(e.range.getA1Notation() == "E9" && e.range.getSheet() == sheet1){
var emailAddress = e.value;
var subject = "Checking the app script"
var message = "Checking the app script working from indigenious id and drive link https://drive.google.com/file/d/1MdoADqSeudMwMruLJUU32OA5bdtyweiv/view?usp=sharing "
MailApp.sendEmail(emailAddress, subject, message);
}
}
此代码使用事件对象range
和value
.
推荐阅读
- python - Pandas 中数值数据的 One-Hot 编码
- python-3.x - 在Python中的特定窗口框架(如15秒)中从心跳'* .wav'格式中提取心率
- python - 如何上传文件或丢失的目录
- google-apps-script - 在多个共享的 google word 文档中自动添加某些文本和表格
- javascript - Lodash 设置整数路径奇怪的行为
- java - Jenetics:如何解释并得到染色体的结果?
- c - 如何在 C 编程中生成具有特定区域附加特定数字的矩阵?
- azure-cognitive-search - ComplexType:根据内部数据分析进行查询
- android - 更新通知操作的正确方法
- python - 我应该如何为 CBC 代码实现初始化向量?