你好,
我对 javascript、谷歌应用程序脚本和一般编码比较陌生。我目前正在使用谷歌表格 [g-sheet] 的 Google Apps 脚本 [g-script] 环境中工作。这是我要完成的工作:
- 使用 g-sheet 存储用于访问 w/ g-script 的数据集
- 使用 g-script 起草和发送电子邮件,使用 HTML 模板 [存储在代码编辑器中] 填充每个行中的唯一数据。
我有一段代码可以从工作表中获取数据。然后我有一个定义的函数来使用 for 循环发送电子邮件。在该 for 循环中,我尝试使用 HTMLService 类从文件中创建一个模板,使用每行的唯一数据填充模板数 [在本例中为 3],并将其存储为 var“htmlBody”。然后,使用 MailApp 类发送唯一创建的 HTML 模板。
我收到的错误:
当我运行代码时,我得到一个“未定义行”的参考错误。我添加了执行日志的图片。console.log(boatData[i]) 语句是一种努力解决问题的方法,是数据集中第一行记录到控制台的信息。
我该如何解决?
编码:
var sheet = SpreadsheetApp.getActive().getSheetByName('DB.charters');
var startRow = 3 ;
var numRows = 3 ;
var dataRange = sheet.getRange(startRow,1,numRows,15);
var boatData = dataRange.getValues();
function sendEmail() {
for (var i in boatData) {
var row = boatData[i] ;
function getEmailHtml() { // gets the HTML template & makes it useable
var htmlTemplate = HtmlService.createTemplateFromFile("emailTempWorkOrder.html"); // uses HtmlService class to create an HtmlTemplate object from the file in the code editor
htmlTemplate.boats = boatData[i] ; //makes the var boatData avail within the template through the proeprty .boats
console.log(boatData[i]); // logs the first row only
var htmlBody = htmlTemplate.evaluate().getContent(); // converts the html file into raw binary content for HTTP responses
return htmlBody;
} // end of getEmailHtml()
var htmlBody = getEmailHtml();
MailApp.sendEmail({ // Sends the email formatted
to: "bmsbreaux@gmail.com",
subject: `Vessel Charter: ${row[1]} -`, // ${row[3]} [Client] [Date @ Time]
htmlBody: htmlBody,
}); // end of MailApp action
} // end of for-loop
} // end of sendEmail()
// Confirmation statement.
console.log('Ran sendEmailWorkOrder(), sent emails');