Replit中使用pygsheets实现Google Sheet API认证时遇KeyError错误
解决Replit中pygsheets认证的KeyError问题
错误原因
pygsheets.authorize()的service_account_env_var参数要求传入存储服务账户JSON内容的环境变量名称,你却传入了本地生成的JSON文件名gcreds.json,程序会去系统环境变量中查找名为gcreds.json的变量,找不到就抛出KeyError。
两种修复方案
方案一:直接用环境变量认证(推荐)
既然已经把凭证JSON存入Replit Secrets的GDRIVE_API_CREDENTIALS环境变量,无需生成本地文件,直接指定该环境变量名即可:
import pygsheets import os gc = pygsheets.authorize(service_account_env_var='GDRIVE_API_CREDENTIALS')
方案二:通过本地JSON文件认证
如果坚持要生成本地文件,需改用service_account_file参数传入文件名,而不是service_account_env_var:
import pygsheets import os import json creds = json.loads(os.environ.get('GDRIVE_API_CREDENTIALS')) with open('gcreds.json', 'w') as fp: json.dump(creds, fp) gc = pygsheets.authorize(service_account_file='gcreds.json')
额外说明
你当前Secrets中的GDRIVE_API_CREDENTIALS值是转义后的JSON字符串,json.loads()可以正确解析,这部分无需修改。方案一省略了文件写入步骤,更简洁高效。
内容的提问来源于stack exchange,提问作者beaconho
相关产品推荐
相关产品推荐

