当单元格内容由于forumula从另一个工作表编译数据而更改时发送电子邮件
Send email when cell content is changed due to forumula compiling data from another sheet
当单元格发生更改时,我需要谷歌电子表格来发送电子邮件。
问题是,这个单元格中显示的内容是由另一张表的值决定的(我为此使用了if和filter函数)。
通常,
if(cell.indexOf('F')!=-1){
MailApp.sendEmail(emailAddress, subject, message);
}
似乎没有捕捉到单元格中的变化,因为变化是由从另一张表中编译数据的公式引起的,然而,如果我在F栏中手动键入内容,它确实会给我发一封电子邮件。
以下是我在脚本编辑器中的全部代码:
function Initialize() {
var triggers = ScriptApp.getProjectTriggers();
for(var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
ScriptApp.newTrigger("sendNotification")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onEdit()
.create();
};
function sendNotification(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell().getA1Notation();
var dataRange = sheet.getRange(2, 1, 2, 2);
var data = dataRange.getValues();
for (i in data) {
var row = data[i]
var emailAddress = row[0];
var message = row[1];
var subject = "Job exceeded time allocated";
if(cell.indexOf('F')!=-1){
MailApp.sendEmail(emailAddress, subject, message);
}
}
}
- 这里讨论了如何使用公式从单元格中提取值:
获取和设置单元格的值不起作用基本上-getCell()返回一个Range对象。。您需要添加.getValue()方法来获取您试图在脚本中执行的范围内的单元格的值。我发现将getRange与单元格地址一起使用效果要好得多:即getRange('B1')
- getCell的设计目的不是返回单元格的值,而是返回单元格的Range对象,如下所述:
尝试使用Google Script API 读取电子表格中的单元格1,1
单元格对象是一个公式,所以你真的不想要它。因此,使用getRange意味着您可以在一个单元格中获得公式结果的范围。
听起来我知道的比我做的多。我自己偶然发现了这个问题,并如上所述解决了它。
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 当单元格内容由于forumula从另一个工作表编译数据而更改时发送电子邮件
- 重新编译 JSON 数据以减少行数
- 在帮助程序处获取对象值的车把,无需使用数据进行编译
- 我该如何访问由gullow灰质插件创建的数据对象(当使用nunjucks编译html文件时)
- 如何延迟子指令的编译阶段,因为父指令的范围具有它所需的所有数据
- 在 Angular 中,当我收到一些新数据时,如何强制模板重新编译
- 使用来自我的控制器的数据编译 html 模板
- Handlebars.js不会编译/输出我的模板/数据
- R中的For循环用于数据编译
- 打印编译后的车把模板(不填写数据)
- 是否有一种方法来收集数据/解析页面在Beautifulsoup从动态编译网页
- 如何访问在编译期间传递给翡翠的数据