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

使用Python与Google Sheets API新建工作表报错:缺失client_email求助

问题分析与解决步骤

核心错误原因

你遇到的MalformedError: Service account info was not in the expected format, missing fields client_email,本质是代码用错了认证文件:

  • 代码里的service_account.Credentials.from_service_account_file()方法,要求传入Google服务账号的JSON密钥文件,这类文件必须包含client_email、private_key、type: "service_account"等核心字段。
  • 你当前用的token.json应该是OAuth2授权生成的用户令牌文件,而非服务账号密钥,这类文件没有client_email字段,所以触发格式错误。

具体解决步骤

  • 替换认证文件:
    去Google Cloud控制台找到对应项目的服务账号,生成新的JSON密钥文件(建议命名为service_account_key.json区分),然后修改代码里的文件路径:
    SERVICE_ACCOUNT_FILE = 'service_account_key.json'
    
  • 修复请求格式错误:
    原代码中batchUpdate的body格式有误,requests必须是数组而非单个对象,否则后续会触发请求失败,修正后:
    body = {
        "requests": [
            {
                "addSheet": {
                    "properties": {
                        "title": f"{sheet_name}"
                    }
                }
            }
        ]
    }
    
  • 确认权限配置:
    把服务账号的client_email添加到目标Google表格的共享列表,授予编辑权限——你之前能读取数据可能是表格设为公开可读取,但创建工作表需要编辑权限。

补充说明

之前代码能运行,是因为当时用的是正确的服务账号密钥文件,现在大概率是替换了文件、密钥文件损坏或丢失核心字段,导致认证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:43:11