我想为一个在人力资源部门工作的朋友编写一个程序,该程序可以自动将拒绝函发送给被拒绝的申请人。
为了对应用程序有一个总体了解,他使用了一个电子表格,其中记录了姓名,职位,访谈等。每个申请人在文档中都有一行。
如果他拒绝候选人,则在特定列中加上“ A”。我希望程序识别那些“ A”,给申请人写一封电子邮件,然后在“ A”旁边的单元格中放入“ done”一词。
代码如下:
function Absagen() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(1, 5);
var endRow = range.getValue();
var startRow = 1;
var numRows = endRow;
var dataRange = sheet.getRange(startRow, 1, numRows, 10)
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[0];
var absage = row[8];
var absageSent = row[9];
var mailLanguage = row[3];
var gender = row[7];
var firstName = row[5];
var lastName = row[6];
Logger.log("absage = "+ absage +" ?");
if (absage == "A" && absageSent != "DONE" && mailLanguage == "2" && gender == "1"){
var message = "<HTML><BODY>"
+"blablabla";
var subject = "Ihre Bewerbung";
MailApp.sendEmail(emailAddress, subject, "", {htmlBody: message});
var destRow = Number(startRow); ++ destRow;
sheet.getRange((destRow+i), 10).setValue("DONE");
SpreadsheetApp.flush();
}
}
}
最初的问题是,“ DONE”值被写入多个位置,然后又写入错误的行中,可以通过简化代码来解决。通过相同的简化,可以避免与数据类型强制有关的问题(来自Serge答案的注释中的String vs Number内容)。
这是第一件事,似乎令人困惑。您似乎期望单元格E1
包含一个数字,该数字将告诉您要评估的行数。
var range = sheet.getRange(1, 5);
var endRow = range.getValue();
然后设置startRow=1
,并使用它来读取数据。当为时i===0
,您再次设置firstName
为单元格的内容E1
。有点不对劲。您可能会得到不是的数字endRow
,或者尝试处理标头。对于此特定功能可能没问题,但是最好使用可以可靠地重复的模式。
假设第一行包含电子表格的标题,而所有随后的行包含需要处理的相关数据。如果mailLanguage
和gender
这些值比较,则必须保留唯一的数据类型强制,如果这些值的数字被强制输入为字符串,或者这些列的格式设置为“纯文本”。
function Absagen() {
var sheet = SpreadsheetApp.getActiveSheet();
var headerRows = 1; // There are this many rows of header info
var dataRange = sheet.getDataRange(); // Range from A1 to last row & col with data
var data = dataRange.getValues(); // 2-dimensional array from datarange
// Start after header rows, process all remaining data rows
for (var rowNum=headerRows; rowNum < data.length; rowNum++) {
var row = data[rowNum];
var emailAddress = row[0];
var absage = row[8];
var absageSent = row[9];
var mailLanguage = row[3];
var gender = row[7];
var firstName = row[5];
var lastName = row[6];
Logger.log("absage = "+ absage +" ?");
if (absage == "A" && absageSent != "DONE" && mailLanguage == 2 && gender == 1){
var message = "<HTML><BODY>"
+"blablabla";
var subject = "Ihre Bewerbung";
MailApp.sendEmail(emailAddress, subject, "", {htmlBody: message});
// Range for update is at (rowNum+1) because the _array_ starts at 0,
// but sheet rows start at 1.
sheet.getRange((rowNum+1), 10).setValue("DONE");
SpreadsheetApp.flush();
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句