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

Smartsheet API新手求助:get_sheet报'type' object has no attribute '__getitem__'错误

解决Smartsheet API调用get_sheet时的'type' object has no attribute '__getitem__'错误

嗨,我来帮你搞定这个问题!从你的报错追踪信息来看,这个错误的根源很明确——是Smartsheet Python SDK的枚举类型处理逻辑在你的Python环境里跑不通。

问题到底出在哪?

具体来说,报错发生在smartsheet/types.py里的EnumeratedValue.set()方法,代码尝试用self.__enum[value]去获取枚举值,但self.__enum是一个类(type)而不是可索引的字典或序列。这种情况90%是因为你的Python版本和Smartsheet SDK版本不兼容:你现在用的是Python 2.7,而新版的Smartsheet SDK早就放弃对Python 2.x的支持了,SDK内部用了Python 3的枚举实现,在Python 2.7里就会触发这个奇怪的错误。

另外,也有可能是你装的SDK版本刚好有个小bug,但版本不兼容是最常见的原因。

怎么解决?给你三个方案

方案1:降级SDK到兼容Python 2.7的版本

Smartsheet SDK的2.x系列是最后支持Python 2.7的版本,你可以用pip安装指定版本:

pip install smartsheet==2.10.1

这个版本在Python 2.7里能正常处理枚举,不会再出现这个索引错误。

方案2:升级到Python 3.x(强烈推荐)

Python 2.7已经停止维护好几年了,不光是Smartsheet,大部分开源库都不再支持它了。如果你的项目允许的话,赶紧把Python版本升到3.7以上,然后安装最新版的SDK:

pip install --upgrade smartsheet

升级之后不仅能解决这个问题,还能用上SDK的新功能和安全补丁,一举两得。

方案3:微调客户端初始化代码

如果暂时不想动版本,可以试试在初始化客户端时指定API版本,有时候能兼容旧环境:

import smartsheet

sheet_id='0823....'
# 初始化时指定API版本为2.0
smartsheet_client = smartsheet.Smartsheet(access_token='6av...', api_version='2.0')
my_sheet = smartsheet_client.Sheets.get_sheet(sheet_id)

验证步骤

按上面的方案调整后,重新运行代码:

  • 如果还是报错,先检查你的Sheet ID是不是正确的,API密钥有没有访问这个Sheet的权限
  • 可以先用Smartsheet的官方API测试方式(比如curl)调用GET /sheets/{sheetId}接口,确认密钥和Sheet ID是有效的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:04:48