首页 > 解决方案 > Google 表格中的慢速 MailApp.send

问题描述

我一直在使用这个 mailapp 编码,并且只根据 K 列中的 EMAIL_SENT 发送给一个人列表,确认它是在 J 列中发送的。这个列表很长,但每次运行只发送给大约 20 人关于 K 列的规则(发送给今天实际工作的人的公式)。过去工作得很好。

现在,尽管最近为我的小组重新格式化了 Google 表格后,发送一封电子邮件需要 20-30 秒,而且在 6 分钟的时间限制内甚至没有完成 20 封电子邮件的列表。我最近的重新格式化确实在 Google Sheet 上包含了更多脚本,并带有更多条件格式,但不在提供此脚本的工作表上。

任何想法是什么让它减慢了这么多?

谢谢

function MorningEmail() {
var sheet = SpreadsheetApp.getActive().getSheetByName('EarlyEmail');
var startRow = 4;  
var numRows = 180;  
var dataRange = sheet.getRange(startRow, 1, numRows, 50)
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0];  // First column
var fromName = row[16];
var replyToaddress = row[15];
var message = row[20]+row[21]+row[22]+row[23]+row[24]+row[25]+row[26]+row[27]+row[28]+row[29]+row[30]+row[31]+row[32]+row[33]+row[34]+row[35]+row[36]+row[37]+row[38]+row[39]+row[40]+row[41]+row[42]+row[43]+row[44]+row[45]+row[46]+row[47]+row[48]+row[49];       
var emailSent = row[10];     
if (emailSent != EMAIL_SENT) {  
  var subject = row[19];
  MailApp.sendEmail(emailAddress, subject, message, {
    name: fromName,
    replyTo: replyToaddress,
    htmlBody: message
  });
  sheet.getRange(startRow + i, 10).setValue(EMAIL_SENT);
  // Make sure the cell is updated right away in case the script is interrupted
  SpreadsheetApp.flush();
}
}
}

标签: emailgoogle-apps-scriptgoogle-sheetshtml-email

解决方案


推荐阅读