You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅每分钟运行一次仍触发gspread的Google Sheets API配额超限问题

解决Google Colab调用Sheets API触发429配额超限问题

问题场景

在Google Colab中执行挂载Drive、授权登录、通过gspread读写表格的流程,代码如下:

from google.colab import drive
drive.mount('/content/drive')
import gspread
from google.colab import auth
auth.authenticate_user()
from google.auth import default
creds, _ = default()
gc = gspread.authorize(creds)
worksheet = gc.open_by_key('some_key').sheet1
import pandas as pd
dataframe = pd.DataFrame(worksheet.get_all_records())
aslist = dataframe.values.tolist()

# 数据处理逻辑

from pprint import pprint
pprint(gc.list_spreadsheet_files())

sheet = gc.open_by_key('some_other_key')
sheet.values_update(
    'Sheet1!A1',
    params={'valueInputOption': 'RAW'},
    body={'values': newlist}
)

运行时触发429配额超限错误:

APIError: {
    'code': 429,
    'message': "Quota exceeded for quota metric 'Read requests' and limit 'Read requests per minute' of service 'sheets.googleapis.com' for consumer 'project_number:some_id'.",
    'status': 'RESOURCE_EXHAUSTED',
    'details': [
        {
            '@type': 'type.googleapis.com/google.rpc.ErrorInfo',
            'reason': 'RATE_LIMIT_EXCEEDED',
            'domain': 'googleapis.com',
            'metadata': {
                'quota_limit': 'ReadRequestsPerMinutePerProject',
                'quota_location': 'global',
                'consumer': 'projects/some_id',
                'quota_metric': 'sheets.googleapis.com/read_requests',
                'service': 'sheets.googleapis.com',
                'quota_limit_value': '1500'
                }
        }, 
        {
            '@type': 'type.googleapis.com/google.rpc.Help',
            'links': [
                {
                    'description': 'Request a higher quota limit.',
                    'url': 'https://cloud.google.com/docs/quota#requesting_higher_quota'
                }
            ]
        }
    ]
}

同时遇到以下问题:

  • 在Google Cloud控制台找不到错误中提到的项目ID
  • 启用Google Sheets API后,仍看不到配额使用指标
  • 查看Cloud监控界面时,仅显示「无可用数据」(原英文界面翻译,时间范围为过去1小时,无任何指标图表)

解决方案

1. 切换到自定义GCP项目(解决无法查看配额的问题)

Colab默认使用Google共享的公共项目,导致用户无法在自己的Cloud控制台查看配额。需改用自定义GCP项目:

  • 操作步骤:
    1. 登录Google Cloud控制台,创建新项目或选择现有项目
    2. 在项目中启用「Google Sheets API」
    3. 创建服务账号密钥(JSON格式),下载到本地
    4. 在Colab中上传该密钥文件,替换原授权代码为:
      import gspread
      from google.oauth2.service_account import Credentials
      
      scopes = [
          'https://www.googleapis.com/auth/spreadsheets',
          'https://www.googleapis.com/auth/drive'
      ]
      
      # 替换为你的服务账号密钥文件名
      creds = Credentials.from_service_account_file('service-account-key.json', scopes=scopes)
      gc = gspread.authorize(creds)
      
  • 切换后,即可在自己的GCP项目中查看和管理Sheets API配额

2. 临时缓解配额超限

  • 合并API请求:避免循环调用读取接口,一次性获取全部数据(如原代码中get_all_records()已做到,但需避免重复调用)
  • 添加请求延迟:在频繁的API操作之间加入延迟,降低请求频率:
    import time
    # 在读写操作前/后添加1秒延迟
    time.sleep(1)
    
  • 批量操作:使用values_update批量写入数据,避免单条数据单独请求

3. 查看及申请配额提升

切换到自定义项目后:

  1. 进入GCP控制台的「APIs和服务」->「仪表盘」
  2. 点击「配额」选项卡,找到「Google Sheets API」的「读请求/分钟」配额
  3. 若默认配额不足,点击配额旁的「申请增加配额」,按指引提交申请即可

内容的提问来源于stack exchange,提问作者qwerty_99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:05:07