PyCharm中Python调用Google Sheets API创建表格报AttributeError求助
错误原因
报错核心是凭证参数类型错误:
你在代码中直接将JSON凭证文件的路径字符串'conof.json'赋值给creds变量,但是googleapiclient.discovery.build()方法的credentials入参要求传入经过解析、合法有效的认证凭证对象,字符串类型没有authorize方法,因此触发属性错误。
你代码中的错误赋值行:
creds = 'conof.json'
这行代码仅存储了文件路径,没有完成凭证文件的加载、解析流程。
修复步骤
- 校验凭证文件信息:先确认本地凭证文件的实际文件名、存放路径和代码中写的
conof.json一致,避免文件名拼写错误(比如常见手误把credentials.json错写为conof.json),建议将凭证文件放在和运行脚本同级的目录下,减少路径解析问题。 - 替换凭证加载逻辑:使用Google Auth库提供的方法加载JSON凭证,生成合法的凭证对象后再传入
build()方法。如果运行代码时提示缺少google.oauth2模块,先执行pip install google-auth安装依赖。 - 配置访问权限:如果使用服务账号类型的凭证,需要将凭证JSON中记录的
client_email字段对应的邮箱地址,添加到目标Google表格的共享成员列表中,赋予编辑权限,否则认证通过后也会因权限不足无法操作表格。
修复后完整代码
from __future__ import print_function from google.oauth2 import service_account from googleapiclient.discovery import build from googleapiclient.errors import HttpError # Google Sheets API权限范围,创建/编辑表格需要该权限 SCOPES = ["https://www.googleapis.com/auth/spreadsheets"] def create(title): # 加载服务账号凭证,替换为你本地实际的凭证文件路径 creds = service_account.Credentials.from_service_account_file( "conof.json", scopes=SCOPES ) try: service = build("sheets", "v4", credentials=creds) spreadsheet = { "properties": { "title": title } } spreadsheet = service.spreadsheets().create( body=spreadsheet, fields="spreadsheetId" ).execute() print(f"Spreadsheet ID: {spreadsheet.get('spreadsheetId')}") return spreadsheet.get("spreadsheetId") except HttpError as error: print(f"An error occurred: {error}") return error if __name__ == "__main__": create("mysheet1")
内容的提问来源于stack exchange,提问作者Asif Uz Zaman
相关产品推荐
相关产品推荐

