我拼凑在一起并修改了以下脚本,该脚本将Google表格的内容通过电子邮件发送到同一张表格中列出的电子邮件地址。它运行正常但仅限于我按名称列出的表单。
我似乎无法解决的问题是循环播放,以便从电子表格中的工作表名称列表中提取工作表名称(当前硬编码为" NYC")。我希望它能够运行引用A1中列出的工作表名称的脚本,然后如果列出了一个A2,那么如果列出了一个,则为A3,等等。
这可能吗?
function sendEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// var sheet = ss.getActiveSheet();
var sheet = ss.getSheetByName('NYC');
var range = sheet.getDataRange();
var recipient = sheet.getRange("A2").getValue(); // "TO" email address
var subject = "Inbound Shipments Scheduled for Delivery On " + Utilities.formatDate(
sheet.getRange("B2").getValue(),
ss.getSpreadsheetTimeZone(),
"MM/dd/yy");
var schedRange = sheet.getRange("A3:Q102");
// var schedRange = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn())
// Put Name & Date into email first.
// We only want the schedule within borders, so
// these are handled separately.
var body = '<div style="text-align:center;display: inline-block;font-family: arial,sans,sans-serif">'
body += '<H1>'+ 'Shipments Due ' +'</H1>';
body += '<H2>'
+ Utilities.formatDate(
sheet.getRange("B2").getValue(),
ss.getSpreadsheetTimeZone(),
"EEEEE, MMMMM d, yyyy")
+ '</H2>';
body += getHtmlTable(schedRange);
body += '</div>';
debugger;
// recipient = '*********@gmail.com'; // For debugging, send only to self
MailApp.sendEmail(recipient, subject, "Requires HTML", {htmlBody:body})
}
&#13;
答案 0 :(得分:0)
在Tutorial: Simple Mail Merg e教程的示例中查看getRowsData()定义中的代码。这将允许您一次读取工作表的内容,这将加快您的代码。然后,您可以遍历数据并使用列标题来检查值。你的代码会发生很大变化,比如:
var ss = SpreadsheetApp.getActiveSpreadsheet();
function sendAllEmails() {
var sheet = ss.getSheetByName("PrimaryDataSHEETname");
var sheetRange = sheet.getRange("A1:Z")
var myRows = getRowData(sheet, sheetRange);
for (var i=0; i < myRows.length; ++i){
if(typeof(myRows[i].Sheet1) !== 'undefined'){
sendIndividualEmail(myRows[i].Sheet1);
}
if(typeof(myRows[i].Sheet2) !== 'undefined'){
sendIndividualEmail(myRows[i].Sheet2);
}
}
function sendIndividualEmail(sheetName) {
var sheet = ss.getSheetByName(sheetName);
//Grab necessary data from tehis sheet and send emails
}
您可以将第一张表格中的其他信息传递给创建电子邮件的功能,例如收件人,主题等。