使用Smartsheet Python SDK添加多列行至目标表遇错误求助
解决Smartsheet添加多列行时的两个问题
一、AttributeError: Retry类无DEFAULT_METHOD_WHITELIST属性
这个错误是因为你安装的requests库版本太新,而旧版smartsheet-python-sdk仍在使用已被废弃的Retry.DEFAULT_METHOD_WHITELIST属性——新版本requests里该属性已改名为allowed_methods。
解决方法:
- 降级requests到兼容版本,执行命令:
pip install requests==2.26.0 - 若不想降级,可手动修改smartsheet库的
session.py文件(路径为报错信息里的/home/mtuccillo/.local/lib/python3.8/site-packages/smartsheet/session.py),将第53行的Retry.DEFAULT_METHOD_WHITELIST替换为Retry.allowed_methods。
二、多列单元格添加的语法错误
你的代码在row_a.cells.append()中传入的字典存在重复的column_id和value键,Python会自动覆盖重复键,导致仅最后一组键值对生效;正确逻辑是每个单元格对应一个独立字典,需分别添加或批量传入。
修正后的单元格添加代码:
row_a = smartsheet.models.Row() row_a.to_top = True # 方式1:逐个添加单元格 row_a.cells.append({ 'column_id': hub_site_name_col, 'value': "YYUUNN" }) row_a.cells.append({ 'column_id': hub_site_clli_col, 'value': "CCIILL123" }) # 方式2:批量添加单元格(二选一即可) # row_a.cells.extend([ # {'column_id': hub_site_name_col, 'value': "YYUUNN"}, # {'column_id': hub_site_clli_col, 'value': "CCIILL123"} # ])
另外,代码中重复创建了smartsheet_client实例,会导致之前传入的access_token被覆盖丢失,需删除重复的无参实例创建代码:
# 删除此行无效代码 # smartsheet_client = smartsheet.Smartsheet()
完整修正后的代码
import smartsheet # 替换为你的实际Smartsheet令牌 access_token = "你的access_token" smartsheet_client = smartsheet.Smartsheet(access_token) hub_site_clli_col = 1088486425710468 hub_site_name_col = 5592086053080964 # 开启错误抛出,便于排查问题 smartsheet_client.errors_as_exceptions(True) # 若需要读取源表数据,可保留此行;否则可注释 # sheet = smartsheet_client.Sheets.get_sheet(4812284098465668) row_a = smartsheet.models.Row() row_a.to_top = True # 添加两个单元格数据 row_a.cells.append({ 'column_id': hub_site_name_col, 'value': "YYUUNN" }) row_a.cells.append({ 'column_id': hub_site_clli_col, 'value': "CCIILL123" }) response = smartsheet_client.Sheets.add_rows( 4812284098465668, # 目标表的sheet_id [row_a]) # 可选:打印响应结果确认操作是否成功 print(response)
内容的提问来源于stack exchange,提问作者Mike Tucci
相关产品推荐
相关产品推荐

