Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何持续获取/计算Gmail发送限制_Google Apps Script_Gmail Api_Quota - Fatal编程技术网

Google apps script 如何持续获取/计算Gmail发送限制

Google apps script 如何持续获取/计算Gmail发送限制,google-apps-script,gmail-api,quota,Google Apps Script,Gmail Api,Quota,我正试图找到一种方法,在接下来的24小时内,一个gmail/gsuite帐户还能发送多少封电子邮件。简言之,我希望有一个一致的方式来获得gmail发送配额 据我所知,用于发送的gmail/gsuite配额可概括为以下内容(不包括MailApp): 在应用程序脚本中使用Gmail应用程序: GSuite帐户每天1500个收件人 试用中的GSuite帐户每天有100到500个收件人 每天有100个Gmail帐户的收件人 使用原始的Gmail API,可以: GSuite帐户每天发送2000封邮件 试

我正试图找到一种方法,在接下来的24小时内,一个gmail/gsuite帐户还能发送多少封电子邮件。简言之,我希望有一个一致的方式来获得gmail发送配额

据我所知,用于发送的gmail/gsuite配额可概括为以下内容(不包括MailApp):

在应用程序脚本中使用Gmail应用程序:

GSuite帐户每天1500个收件人 试用中的GSuite帐户每天有100到500个收件人 每天有100个Gmail帐户的收件人 使用原始的Gmail API,可以:

GSuite帐户每天发送2000封邮件 试用中GSuite帐户每天发送500条消息 每天有500个Gmail帐户的收件人 考虑到在appscript中的实现中,我可以使用GmailApp或,如何始终获得剩余配额来展示用户并最终停止电子邮件

我沿着这两条路走,但没有结果:

1在appscript中我可以使用 然而,从我的测试来看,这个方法似乎并没有返回实际值,而只是在我的测试中用了8小时刷新的最后一次计算值

这是我使用的代码:

function logRemainingQuota(e) {
var emailQuotaRemaining = MailApp.getRemainingDailyQuota();
Logger.log("Remaining email quota now: " + emailQuotaRemaining);
}
我试图通过gmail和一些插件通过同一个帐户发送电子邮件,但配额从未立即减少,仅仅几个小时后

2使用gmail api计算值 通过拨打以下电话,我可以在resultSizeEstimate字段中获得过去24小时内发送的电子邮件数量,或者简单地计算邮件数量

curl \
  'https://www.googleapis.com/gmail/v1/users/me/messages?q=from%3Ame%20newer_than%3A1d%20in%3Aanywhere&fields=resultSizeEstimate&key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --compressed
查询是:from:me\u比:1d in:anywhere 然而,这个值似乎不是真的,并且返回了更多的数据。 此外,无法区分正在试用的gsuite帐户和未试用的gsuite帐户,这使得以可靠的方式应用计算变得困难

总而言之,我有以下问题:

是否有一种方法可以用来计算/获取发送gmail邮件或收件人的剩余配额数量,如果应用程序内脚本更好? 是否有办法了解gsuite帐户是否正在试用中? 很抱歉发了这么长的帖子,谢谢你的帮助

--编辑--

因此,我更新了代码以对脚本执行测试:

function sendWithGmailApp(e) {

  var now = new Date();
  GmailApp.sendEmail("example@gmail.com", "current time", "The time is: " + now.toString());

  Logger.log("Gmail App used ");

  var emailQuotaRemaining = MailApp.getRemainingDailyQuota();
  Logger.log("Remaining email quota now Gmail App: " + emailQuotaRemaining);
}

function sendWithGmailAPI(e) {
  var draft = GmailApp.getMessageById('17139fda2e54af59');
  var raw = draft.getRawContent();
  var message = Gmail.newMessage();
  Gmail.Users.Messages.send(message, "me", Utilities.newBlob(raw, "message/rfc822"));
  Logger.log("Gmail Api used ");

  var emailQuotaRemaining = MailApp.getRemainingDailyQuota();
  Logger.log("Remaining email quota now Gmail Api: " + emailQuotaRemaining);
}

function showquota(){
var emailQuotaRemaining = MailApp.getRemainingDailyQuota();
  Logger.log("Remaining email quota now Gmail App: " + emailQuotaRemaining);
}
我还复制了一份脚本,以确定配额是基于用户还是基于用户/脚本。 以下是我的结论:

MailApp.getRemainingDailyQuota适用于通过GmailApp发送的电子邮件 配额与GmailApp/MailApp相关,并且基于用户,因此其他脚本可以使用配额 使用GmailApi高级服务不会使用此配额,因此它会退回到。 我已经在遗留的GAE引擎中进行了测试,它可以正常工作 所以现在我的问题是,

1如果我的应用程序使用高级服务,有没有办法通过gmail API预测用户配额

2使用高级服务也会影响URLFetch配额,因为它基本上是一个包装器?

该方法将返回与使用MailApp和GmailApp相关的剩余配额,其限制如下所述

当做出回应时,也包括来自社交场所的信息,这些信息带有聊天标签。在任何情况下,您都可以按“已发送”标签过滤已发送的消息

您可以尝试使用messages.list方法找到解决方法,问题是您不知道每个用户的配额在什么时候刷新,如下所述:

每天的限额适用于连续24小时,而不是一组 一天中的时间

如果您要尝试开发某种紧密的变通方法,则可以使用该类使用脚本和基于时间的方法为每个用户存储值 ,可能对你有用

关于您的提前服务问题,文档中没有指定它们的配额,但受URLFecthApp限制是有意义的,因为两者都被视为请求。另外,请注意Gmail API有自己的一组配额。

该方法将返回与MailApp和GmailApp的使用相关的剩余配额,其限制已声明

当做出回应时,也包括来自社交场所的信息,这些信息带有聊天标签。在任何情况下,您都可以按“已发送”标签过滤已发送的消息

您可以尝试使用messages.list方法找到解决方法,问题是您不知道每个用户的配额在什么时候刷新,如下所述:

每天的限额适用于连续24小时,而不是一组 一天中的时间

如果您要尝试开发某种紧密的变通方法,则可以使用该类使用脚本和基于时间的方法为每个用户存储值 ,可能对你有用


关于您的提前服务问题,文档中没有指定它们的配额,但受URLFecthApp限制是有意义的,因为两者都被视为请求。另外,请注意Gmail API有自己的一套。请在24小时内尽量不要超过发送速度配额
24小时内的rs/秒。然而,这个值似乎不正确,返回的数据更多,这是什么意思?关于您的第二个问题,答案是否定的,您无法通过编程知道G套件帐户是否正在试用。对于我来说,MailApp.getRemainingDailyQuota在发送消息后立即给出真正的配额值,它工作正常,您能分享您用来测试它的代码吗?您正在使用版本吗?您好,Andresduart谢谢您的回复。我在问题中添加了代码,实际上是一个非常简单的函数。我在V8上,有一个gmail帐户。我是我的测试我直接使用gmail发送电子邮件或使用gmail应用程序的附加组件,但是结果只有在几个小时后才会改变。当你手动通过gmail UI时,你没有使用gmail API配额,这是MailApp.getRemainingDailyQuota方法返回的一个配额。关于Gmail插件,我无法重现您的问题,我使用的是一个插件,它发送消息,然后记录剩余的每日配额,并给出预期的结果。我在[DEPRECATED_ES5]运行时版本中测试了我的外接程序,因为V8中的外接程序出现了本文所述的问题。嘿@Andresduart再次感谢你,我做了更多测试,并在问题中添加了它们。正如您所说,ES5上的配额似乎一直在减少,可能是我的附加组件使用了原始API。你还知道我是否有办法计算gmail发送配额,或者使用gmail高级服务是否会减少URLFetch配额?在24小时内尽量不要超过该配额24小时/秒的发送速度。但是,这个值似乎不正确,返回的数据更多,这是什么意思?关于您的第二个问题,答案是否定的,您无法通过编程知道G套件帐户是否正在试用。对于我来说,MailApp.getRemainingDailyQuota在发送消息后立即给出真正的配额值,它工作正常,您能分享您用来测试它的代码吗?您正在使用版本吗?您好,Andresduart谢谢您的回复。我在问题中添加了代码,实际上是一个非常简单的函数。我在V8上,有一个gmail帐户。我是我的测试我直接使用gmail发送电子邮件或使用gmail应用程序的附加组件,但是结果只有在几个小时后才会改变。当你手动通过gmail UI时,你没有使用gmail API配额,这是MailApp.getRemainingDailyQuota方法返回的一个配额。关于Gmail插件,我无法重现您的问题,我使用的是一个插件,它发送消息,然后记录剩余的每日配额,并给出预期的结果。我在[DEPRECATED_ES5]运行时版本中测试了我的外接程序,因为V8中的外接程序出现了本文所述的问题。嘿@Andresduart再次感谢你,我做了更多测试,并在问题中添加了它们。正如您所说,ES5上的配额似乎一直在减少,可能是我的附加组件使用了原始API。你还知道我是否有办法计算gmail发送配额,或者使用gmail高级服务是否会减少URLFetch配额?谢谢你的详细解释:gmail发送配额的刷新时间我认为只考虑了最后24小时,对吗?不管怎样,也许有了这些信息,应该可以尝试一些东西。太糟糕了,无法确定gsuite用户是否处于试用模式谢谢您的详细解释:gmail发送配额的刷新时间我想只是考虑了最近24小时,对吗?不管怎样,也许有了这些信息,应该可以尝试一些东西。太糟糕了,无法确定gsuite用户是否处于试用模式