脚本因电子邮件无效而失败:未定义(第29行,文件“ newCode”)
已经解决了一些错误,但仍停留在此上。 除了错误消息,我还找到了调试器选项并运行了该选项。 这没有多大意义,但这一行似乎与投诉相符。 “电子邮件地址未定义”
我觉得这可能与我在这里所做的事情有关:
var emailAddress = row[3]; // columnD
我想我在借入的代码中所做的只是更改要从中提取信息的列。在这种情况下,电子邮件地址。据我所知,Google表格中的D列被称为“ 3” ColA = 0,ColB = 1 ... ColD = 3。
我无法对电子邮件地址进行硬编码,因为该地址将在每一行之间变化。 有人可以告知这是怎么回事吗?
function Initialize() {
var triggers = ScriptApp.getProjectTriggers();
for(var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
ScriptApp.newTrigger("SndMail()")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onFormSubmit()
.create();
}
// Write a value to column G for rows where an email sent successfully and sends non-duplicate emails with data from the current spreadsheet.
function SndMail() {
var EMAIL_SENT = 'Sent';
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 75; // Number of rows to process.
// Fetch the range of cells A2:G76
var dataRange = sheet.getRange(startRow, 2, numRows);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[3]; // columnD
var message = 'Please create a Logistics Case and log the CAS# for: <br/> row[4 + 5]'; // columnE
var mailout = row[6]; // columnG
if (mailout != EMAIL_SENT) { // Prevents sending duplicates
var subject = 'Logistics Claim case request';
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 3).setValue(Sent);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
应该发生的是,当提交Google表单时,工作表已更新,并且脚本运行以通过电子邮件发送给预期的收件人(在D列中发送电子邮件给addy),随后将文本“ Sent”发送到G列中。过滤后续功能的运行,避免重复发送电子邮件。
答案 0 :(得分:1)
此修改如何?
sheet.getRange(startRow, 2, numRows)
中检索值时,仅检索列“ B”。
var emailAddress = row[3]
成为undefined
。我认为您遇到问题的原因是这样的。为了避免错误,如何进行如下修改?
var dataRange = sheet.getRange(startRow, 2, numRows);
至:
var dataRange = sheet.getRange(startRow, 2, numRows, sheet.getLastColumn());
或
var dataRange = sheet.getRange(startRow, 2, numRows, 7); // A2:G76 ?
如果我误解了你的问题,我表示歉意。