我如何让谷歌应用脚本服务的剩余每日邮件配额一致地工作?

我做了一个关于Google应用程序脚本的项目,以便在发送表单回复后自动发送电子邮件。但是,当我使用MailApp.getRemainingDailyQuota()方法检查每日剩余电子邮件配额时,配额响应因每次脚本执行而异。

所以我使用MailApp.getRemainingDailyQuota()方法创建了另一个项目来测试配额,尽管如此,每次执行时配额响应都不同。


用于测试的代码:

function testeDeCota() { 
  let cota;

  cota = MailApp.getRemainingDailyQuota();
  Logger.log("Cota de emails restantes: " + cota);

  cota = MailApp.getRemainingDailyQuota();
  Logger.log("Cota de emails restantes: " + cota);

}

我使用的工作区帐户的配额为每天1500封电子邮件。

这是我执行死刑的截图。请注意,有3次连续执行,没有发送任何电子邮件,即使配额响应各不相同。回复如下:

1394; 1399; 1390。

每当我尝试发送电子邮件或获取配额信息时,数字只是随机变化。

printscreen of the script executions


解决方案

这似乎是故意的行为。

除了Marios提到的旧问题(Gmail SendEmail Quota - Decrementing Bug/issue),这是最近在Issue Tracker上报告的,并以Intended Behaviour

结束
  • MailApp.getRemainingDailyQuota() is giving incorrect information

查看备注#6和#8:

此方法返回值的这种小波动是意料之中的。

此行为是由Apps脚本内部处理配额的方式引起的。这是预期行为。

不同的执行与循环:

有趣的是,只有在单独的调用中调用此方法时才能看到这种差异。相反,在循环中调用此方法时,不会显示波动:

for(i=1; i<=n; i++) {
  SpreadsheetApp.openById(documentID).getSheetByName(sheetName).appendRow([new Date(), MailApp.getRemainingDailyQuota()]);
  Utilities.sleep(1000);
}

提交功能请求:

如参考问题中所述,如果这以某种方式影响了您的工作流程,您可以考虑filing a feature request。

相关文章