如何克服 Google Apps 脚本电子邮件发送中的“服务在一天内调用太多次:电子邮件”限制?

问题描述 投票:0回答:1

当我尝试发送电子邮件时,我的 Google Apps 脚本中遇到“一天内调用的服务次数过多:电子邮件”错误。我已了解每日电子邮件发送限制,但我正在寻找解决方案或最佳实践来克服此问题。

  1. 是否有任何推荐策略可以使用 Google Apps 脚本高效发送大量电子邮件而不达到此限制?

  2. 是否建议切换到 Gmail API 以获得更高的电子邮件发送限制?如果是,我该如何在我的脚本中进行设置?

  3. 是否有其他方法或解决方法可以在 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-apps-script google-sheets gmail gmail-api
1个回答
0
投票

我有一个付费的 Google Workspace 业务入门帐户。我认为邮件合并的配额是每天 1500 封电子邮件。然而我调用了该服务。使用 Appscript 邮件合并。

© www.soinside.com 2019 - 2024. All rights reserved.