当我尝试发送电子邮件时,我的 Google Apps 脚本中遇到“一天内调用的服务次数过多:电子邮件”错误。我已了解每日电子邮件发送限制,但我正在寻找解决方案或最佳实践来克服此问题。
是否有任何推荐策略可以使用 Google Apps 脚本高效发送大量电子邮件而不达到此限制?
是否建议切换到 Gmail API 以获得更高的电子邮件发送限制?如果是,我该如何在我的脚本中进行设置?
是否有其他方法或解决方法可以在 Google Apps 脚本中发送电子邮件而不受这些限制?
我感谢任何有关解决此问题的见解或指导。谢谢!
sendEmails 程序是一个 Google Apps 脚本脚本,用于根据 Google 表格中存储的数据发送电子邮件。以下是其工作原理的简要说明:
变量设置:程序首先设置多个变量,例如消息、主题、Google Drive 文件夹 ID 以及用于跟踪已发送电子邮件的文件名。
从 Google Sheet 中获取数据:它从 Google Sheet 的当前工作表中检索数据,包括电子邮件地址(孩子和家长)、分数和其他数据。
检查和发送电子邮件:程序迭代数据行并检查分数是否以“+”结尾。如果满足条件,它将验证电子邮件是否已发送到电子邮件地址(email1 和 email2)。如果电子邮件已发送,则不会重新发送。
发送电子邮件:根据电子邮件地址(email1 和 email2)的存在,程序会向孩子、家长或两者发送电子邮件。发送邮件后,邮件地址会添加到sent_emails.txt文件中,防止重复发送。
总而言之,该程序根据 Google 表格中的数据自动发送祝贺电子邮件,同时考虑到 Google Apps 脚本中电子邮件发送的限制并避免向同一地址发送重复的电子邮件。
我的代码:
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
var message = "Здравствуйте, вы получили плюс!";
var subject = "Поздравляем!";
var folderId = '19CAHVoMPr8mKlZumZ9mRXBF9VIL3woPy';
var fileName = "sent_emails.txt";
var folder = DriveApp.getFolderById(folderId);
var file;
try {
file = folder.getFilesByName(fileName).next();
} catch (e) {
file = folder.createFile(fileName, '');
}
var sentEmails = file.getBlob().getDataAsString().split('\n');
for (var i = 1; i < data.length; i++) {
var email1 = data[i][16];
var email2 = data[i][17];
var score = String(data[i][7]);
if (score.match(/\+$/) && (!sentEmails.includes(email1) || !sentEmails.includes(email2))) {
if (email1 && email2) {
GmailApp.sendEmail([email1, email2], subject, message);
file.setContent(file.getBlob().getDataAsString() + email1 + '\n'+ email2 + '\n');
} else if (email1) {
GmailApp.sendEmail(email1, subject, message);
file.setContent(file.getBlob().getDataAsString() + email1 + '\n');
} else if (email2) {
GmailApp.sendEmail(email2, subject, message);
file.setContent(file.getBlob().getDataAsString() + email2 + '\n');
}
}
}
}
我有一个付费的 Google Workspace 业务入门帐户。我认为邮件合并的配额是每天 1500 封电子邮件。然而我调用了该服务。使用 Appscript 邮件合并。