如何增加Google表格v4 API配额限制

Pet*_*sen 11 google-sheets-api

新的Google表格API v4目前每天都有无限的读/写配额(非常棒),但每100秒每个帐户限制为500个读/写,每100秒每个键有100个读/写(或者,我有发现,来自同一IP的多个密钥).这可能适用于大多数用例,但我有一个边缘案例,需要将经常更新的Google Sheet与70个选项卡一起下载到node.js服务器,该服务器每隔~30-60秒左右将这些选项分发给用户的客户端(用户)是作为学生研究助理的数据注释者.在项目早期没有那么糟糕的情况下,只有20-30个标签,但现在数据很大,服务器正在吹过100个配额并每10-15分钟返回错误.

问题是这样的:

  1. 频繁的数据更新:只有70个选项卡中的1-5个数据可能在任何给定的分钟内更新,但哪些选项卡有新数据是随机的(因此我将整个70 = 70的读取数据拉下来).
  2. 更新间隔:更新需要以大约30秒到5分钟的间隔随机发生(因此有些在配额内,有些约为配额的3-5倍).
  3. 限制:我已经尝试将更新限制在100个调用/ 100秒内(我之前的解决方案),但这会引入大的可用性问题,从而显着降低可用性/生产力/工作质量.
  4. 配额增加:工作表API目前似乎不包括增加配额的付款方式.它确实允许填写表格以请求增加配额,但我不确定平均响应时间是多少(我的请求只有几天).
  5. 多个服务帐户:我尝试使用多个服务帐户来获取完整的500个请求/ 100秒配额(而非每个用户的配额),因为这是一个服务器,但Google表格看起来速率限制为100个请求/ 100来自给定IP的秒数
  6. 替代方案:我认为这个项目可能已经超出了Sheets可以轻松处理的规模,但似乎没有任何好的,可用的,自托管的,协作的电子表格,以及易于接口的API在那里.

是否有建议/方法来实现服务器的完整500次呼叫/ 100秒?

Sam*_*lin 7

  1. 您可以使用电子表格.get 在一次调用中读取整个电子表格,而不是每个请求一次调用。或者,您可以使用电子表格.values.batchGet 在一次调用中读取多个不同的范围,如果您只需要这些值。

  2. Drive API 提供“推送通知”,因此您可以在发生更改时收到通知并对其做出反应,而不是轮询它们。通知的延迟有点慢,但它可以完成工作。

  • 谢谢——我没有意识到 batchGet 可以接受跨不同选项卡/工作表的多个范围,我已经用 batchGet 替换了我的 get 调用,以减少从 API 调用中检索 70 个选项卡到 2 个 API 调用(一个用于列出哪些选项卡/工作表可用于给定的工作表,第二个是 batchGet 以检索每个选项卡中的所有行)。这两个链接很有帮助:https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/batchGet https://developers.google.com/sheets/api/samples/reading(非常底部) (2认同)

Ale*_*lex 6

您可以在Google Cloud Platform中请求配额更新,配额更新将增加到每个帐户2500个(每个用户500个)。(关于您的#4) 在此处输入图片说明

  • @Alex 对于没有计费帐户的帐户,配额请求似乎不允许每 100 秒超过 500 个请求。您能检查一下吗? (4认同)
  • @亚历克斯太棒了!该链接似乎已移至 > IAM & admin > Quotas(不确定是否与您的意思相同?)。 (3认同)
  • 不,它是免费的。转到https://console.cloud.google.com => API和服务=>配额=>编辑任何“每个读取请求” =>发送请求并发送Google Sheets API配额请求 (2认同)