如果某些单元格留空,我希望每天结束时发送电子邮件(我可以为此使用触发器)。
换句话说,每天结束时都需要填写某些单元格,如果没有填写,我想发送一封电子邮件(如果可能,到多个地址)以提醒经理。
例如,我要检查任何值的单元格是:B18:B19,C24(还有更多范围和单个单元格我要检查)
我所拥有的我收到一个错误代码
“在对象中找不到函数isBlank”
我是Script的新手,这是我在其他论坛上发现的零碎代码
function myFunction() {
var ui = SpreadsheetApp.getUi();
var sheet = SpreadsheetApp.getActive().getSheetByName("Routes & Hours"); //this is the sheet that the data to be checked is in
var sunCells = [
[sheet.getRange("B18:B19").getValue(),
sheet.getRange("C24").getValue()
]
];
if(sunCells.isBlank()){
MailApp.sendEmail("XXXXX@gmail.com", "incomplete required cells", "message");
}
}
还有,有什么方法可以确定哪些单元格是空白单元格并在电子邮件警报中发送?
非常感谢您的帮助
答案 0 :(得分:0)
如果我的理解是正确的,那么该修改如何?我认为您的情况有几个答案,所以请考虑其中之一。
sunCells
是一个包含单元格值的数组。并且sheet.getRange("B18:B19").getValue()
仅检索“ B18”的值。isBlank()
可用于范围。反映以上几点的脚本如下。
如果将“ B18:B19”用作“ B18”和“ B19”,则可以使用以下脚本。在此修改中,a1Notation仅由一个单元格分隔,例如“ B18:B19”至“ B18”和“ B19”。由此,可以检查每个单元。在此脚本中,当isBlank()
使用“ B18:B19”时,如果“ B18”和“ B19”均为空,则为true。
var sunCells = [
[sheet.getRange("B18:B19").getValue(),
sheet.getRange("C24").getValue()
]
];
if(sunCells.isBlank()){
MailApp.sendEmail("XXXXX@gmail.com", "incomplete required cells", "message");
}
至:
var sunCells = ["B18", "B19", "C24"]; // Modified
var ranges = sheet.getRangeList(sunCells).getRanges(); // Added
var res = sunCells.filter(function (_, i) {return ranges[i].isBlank()}); // Added
if (res.length > 0) { // Modified
MailApp.sendEmail("XXXXX@gmail.com", "incomplete required cells " + res, "message"); // Modified
}
如果您想原样使用“ B18:B19”的a1Notation,则可以使用以下脚本。在此脚本中,“ B18:B19”被解析为“ B18”和“ B19”。由此,可以检查每个单元。使用此功能时,请运行myFunction()
。
// This method is from https://stackoverflow.com/a/21231012/7108653
function columnToLetter(column) {
var temp, letter = '';
while (column > 0) {
temp = (column - 1) % 26;
letter = String.fromCharCode(temp + 65) + letter;
column = (column - temp - 1) / 26;
}
return letter;
}
function myFunction() {
var ui = SpreadsheetApp.getUi();
var sheet = SpreadsheetApp.getActive().getSheetByName("Routes & Hours");
var sunCells = ["B18:B19", "C24"];
// The following script was modified.
var cells = sunCells.map(function(e) {
var temp = [];
var range = sheet.getRange(e);
var r = {
startRowIndex: range.getRow(),
endRowIndex: range.getRow() + range.getNumRows(),
startColumnIndex: range.getColumn(),
endColumnIndex: range.getColumn() + range.getNumColumns(),
}
for (var i = r.startRowIndex; i < r.endRowIndex; i++) {
for (var j = r.startColumnIndex; j < r.endColumnIndex; j++) {
temp.push(columnToLetter(j) + i);
}
}
return temp;
})
cells = Array.prototype.concat.apply([], cells);
var ranges = sheet.getRangeList(cells).getRanges();
var res = cells.filter(function (_, i) {return ranges[i].isBlank()});
if (res.length > 0) {
MailApp.sendEmail("XXXXX@gmail.com", "incomplete required cells " + res, "message");
}
}
sunCells
。如果我误解了您的问题,请告诉我。我想修改它。