【发布时间】:2014-11-19 10:07:13
【问题描述】:
我有一个将任务存储在工作表 1 上的电子表格。任务完成后会发送一封电子邮件。表 2 包含用于发送至、抄送和回复的特定电子邮件地址。我可以遍历表 2 并获取每列的电子邮件地址。我希望能够将这些电子邮件地址添加到我在 MailApp 中发送电子邮件的选项中。我无法从表 2 的循环中获取电子邮件地址。请参阅下面的代码。任何帮助将不胜感激。
var EMAIL_SENT = "EMAIL_SENT";
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheets()[0];
var sheet2 = ss.getSheets()[1];
var startRow = 2;
var lastRow1 = sheet1.getLastRow()-1;
var lastCol1 = sheet1.getLastColumn();
var lastRow2 = sheet2.getLastRow()-1;
var lastCol2 = sheet2.getLastColumn();
var sh1Range = sheet1.getRange(startRow, 1, lastRow1, lastCol1).getValues();
var sh2Range = sheet2.getRange(startRow, 1, lastRow2, lastCol2).getValues();
var subject = "Test Email";
//sheet2 Email Loop
for (var i = 0; i < sh2Range.length; ++i){
var emails = sh2Range[i];
var to = emails[0];
var cc = emails[1];
var replyTo = emails[2];
}
//sheet1 Data Loop and Send Email
for (var j = 0; j < sh1Range.length; ++j){
var data = sh1Range[j];
var pName = data[0];
var pID = data[1];
var pm = data[2];
var dd = Utilities.formatDate(new Date(data[3]), "America/New_York", "MMMM dd, yyyy");
var team1 = data[4];
var status = data[7];
if (team1 == "Task Completed" && status !== EMAIL_SENT){
var htmlBody;
htmlBody = "Project Name: "+pName+"<br>"+"Project ID: "+pID+"<br>"+"Project Manager: "+pm+"<br>"+"Due Date: "+dd+"<br>";
var optAdvancedArgs = {replyTo: replyTo, cc: cc, name: "Test Email", htmlBody: htmlBody};
//Logger.log(htmlBody);
//Logger.log(optAdvancedArgs);
}
}
}
【问题讨论】:
-
问题,sh2Range.length 和 sh1Range.length 是同一个值吗?如果是这样,将其全部构建到一个“for”循环中可能会更容易,否则您将考虑创建对象(或者可能是数组,但我认为这对于命名值是不好的做法。)
-
sh2Range.length循环 sheet 2 中的值,sh1Range.length循环 sheet 1 中的值。你是说变量名应该改变吗?您能否展示一个在一个for循环中循环通过 sheet1 和 sheet2 的示例? -
抱歉,为了澄清,我的意思是,sh2Range 和 sh1Range 的长度相同吗?在我看来,它们应该是这样,如果它们始终如一,那么您将更容易将所有内容都循环一遍。
-
也许如果您看到样本表,您可以看到我想要实现的目标。 My Sheet
标签: google-apps-script google-sheets