异常:服务在一天内调用太多次:premium urlfetch

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

我有一些脚本在触发器上运行。有些函数计划每天运行一次,很少每 10 分钟运行一次。 我正在使用 Google 工作区帐户,该帐户的 Urlfetch 调用配额为每天 100,000 次。我很确定我没有超过这个配额。所以,不知道为什么我一直收到这个例外。

异常:服务在一天内被调用太多次:premium urlfetch。

此外,此异常每天出现大约一个小时,然后解决。

请告知以下事项:-

  1. 根本原因和解决方案
  2. urlfetch 和 premium urlfetch 的区别(作为例外说 premium)
google-apps-script google-cloud-platform urlfetch quota
2个回答
0
投票

App 脚本配额和限制

我想澄清一下“urlfetch”和“premium urlfetch”之间的区别。正如 App Script 的Google 服务配额所建议的那样,已分为两类,一类用于消费者或 gmail 帐户,另一类用于 Google Workspace 帐户,您的高级错误是由于您拥有的版本管理 App 脚本项目(Gmail 帐户的限制只有 20,000 个“urlfetch”)

确定根本原因可能会将您带到不同的场景。大多数时候可能是由于多种原因造成的,主要是服务被调用次数过多,在这种情况下使用不同的项目或脚本多次调用 Sheet API,导致错误影响您的用户帐户,或者通过您的表格或脚本获取的新数据不断增加。要考虑的一个关键事项是错误与每个用户的配额有关,您可以创建一个新用户并以新用户作为新项目或副本的所有者运行脚本。

在这个线程上有一个类似的场景,关于函数和数据的指数增长如何导致出现的错误和一个潜在的解决方案,我强烈建议审查它:

参考资料:


0
投票

要查找您实际调用

UrlFetchApp.fetch()
的次数,请使用
console.log()
。一种简单的方法是将所有
UrlFetchApp.fetch(...).getContentText()
调用替换为对辅助实用程序函数的调用,例如这个函数:

/**
* Caches and logs UrlFetchApp.fetch().getContentText().
*
* @param {String} url The URL to fetch.
* @param {Object} params The parameters to use in fetch.
* @param {String} optContext Optional. An identifier string to log.
* @return {String} The text returned by HTTPResponse.getContentText().
*/
function cachedUrlFetchContentText_(url, params, optContext) {
  // version 1.0, written by --Hyde, 11 March 2023
  //  - see https://stackoverflow.com/a/75705228/13045193
  const cacheKey = JSON.stringify([url, params]);
  const cache = CacheService.getScriptCache();
  let result;
  let resultJson = cache.get(cacheKey);
  if (resultJson) {
    result = JSON.parse(resultJson);
  } else {
    result = UrlFetchApp.fetch(url, params)
      .getContentText(); // replace with .getContent() to get raw result
    resultJson = JSON.stringify(result);
    cache.put(cacheKey, resultJson, 21600);
  }
  console.log(`cachedUrlFetchContentText_ context: ${optContext || '-'} from: ${url}`);
  return result;
}

当您使用实用函数包装对

UrlFetchApp.fetch()
的所有调用时,也很容易合并缓存,如上所示。在许多用例中,缓存可以帮助您首先避免达到配额限制。

要查看日志,请访问我的执行仪表板或日志资源管理器

参见控制台云日志记录缓存服务

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