当特定单元格达到所需的文本值时,我正在尝试在电子表格中设置电子邮件警报/通知。
我不太习惯JS,但是我可以使用现有代码进行基本更改。
这是我需要使用的示例表:
基本上,我需要脚本首先运行B列中的单元格值,然后再遍历C列,依此类推,并查找所有值为“ Fail”的单元格。
对于这些单元格,我想发送一封包含自定义文本的电子邮件到特定的电子邮件地址。
如果可能的话,我想为每列提供一封电子邮件,并且该列中的所有单元格均为“失败”。
我尝试了一些代码,但是没有用,这是我尝试在网站上提供一些帮助的代码,但是它没有正确的单元格,因此我一定犯了一些错误:
function myFunction() {
var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
for(n=1;n<values.length;++n){
var cellValue = values[n][2];
var trigger = cellValue = 'Fail';
if (trigger) {
//MailApp.sendEmail(values[n][1], subject, message);
Logger.log('send mail to ' + values[n][10]);
}
}
}
如果有人可以帮助我,我会非常感激:)
提前谢谢
更新
ziganotschka 下面建议的代码可以正常工作。
正如我在评论部分所问的,是否可以将getValues或getA1Notation中的值放入2D数组中? 我基本上想重新创建源表的相同结构,然后将数组转换成HTML表(这是我可以做的)并将其插入Alert电子邮件中;结果就是得到这样的结果(假设您看到的值是QC为“失败”的值):
和
答案 0 :(得分:1)
您可以按以下方式修改代码:
function myFunction() {
var range = SpreadsheetApp.getActiveSheet().getDataRange();
var values = range.getValues();
var allFails = '';
var trigger = false;
for(a=1;a<values[0].length;a++){
for(n=0;n<values.length;n++){
var cellValue = values[n][a];////
if(cellValue == 'Fail'){
trigger = true;
allFails+=range.getCell(n+1, a+1).getA1Notation()+',';
}
}
if (trigger) {
//MailApp.sendEmail( allFails, subject, message);
Logger.log('cells with Fail: ' + allFails);
}
trigger=false;
allFails = '';
}
}
基本上
for
循环以遍历所有行和列(从B
开始)希望对您有所帮助!
更新:
要按照第二个问题的要求创建数组,可以按以下方式修改代码:
function myFunction2() {
var range = SpreadsheetApp.getActiveSheet().getDataRange();
var values = range.getValues();
//var allFails = '';
var trigger = false;
for(var a=1;a<values[0].length;a++){
eval('var ' + 'array'+a + '= [];')
eval('array'+a+'[0]=[];')
eval('array'+a+'[1]=[];')
for(var n=0;n<values.length;n++){
var cellValue = values[n][a];////
if(cellValue == 'Fail'){
trigger = true;
eval('array'+a+'[0].push("'+values[n][0]+'");')
eval('array'+a+'[1].push("'+cellValue+'");')
}
}
if (trigger) {
//MailApp.sendEmail( allFails, subject, message);
Logger.log(eval('array'+a));
}
trigger=false;
allFails = '';
}
}
Eval是一个Javascript函数,可让您创建动态 变量名称。