如何使用Smartsheets API Python

时间:2017-09-26 15:24:57

标签: python api sdk smartsheet-api

我尝试从Python SDK API中使用 Users.list_org_sheets(include_all = True)检索工作表。

有了我,我可以看到我需要的所有东西:

lstorg = ss.Users.list_org_sheets(include_all=True)
for entry in lstorg.data:
    print(entry.id)
    print(entry.name)

ss是smartsheet.Smartsheet(令牌)。 所以,我可以看到我的域中的所有工作表,但当我尝试使用get_sheet_as_excel(id,path)下载它们时,我收到了错误:

print(ss.Sheets.get_sheet('6157394402142084'))
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    print(ss.Sheets.get_sheet('6157394402142084')
  File "E:\Python\lib\site-packages\smartsheet\sheets.py", line 525, in get_sheet
    response = self._base.request(prepped_request, expected, _op)
  File "E:\Python\lib\site-packages\smartsheet\smartsheet.py", line 218, in request
    raise the_ex(native, str(native.result.code) + ': ' + native.result.message)
smartsheet.exceptions.ApiError: {"requestResponse": null, "result": {"code": 1006, "message": "Not Found", "name": "ApiError", "recommendation": "Do not retry without fixing the problem. ", "refId": null, "shouldRetry": false, "statusCode": 404}}

我猜这个错误意味着他没有找到该文件(错误404),但我不知道为什么,就在我发出命令获取所有工作表的列表然后当我选择其中一个(我不是拥有此令牌的所有者,但令牌是SysAdmin)

谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

您所描述的情况是由于权限在Smartsheet中的运作方式。使用SysAdmin令牌,您可以成功获取该帐户成员拥有的所有表格的 列表 ,但SysAdmin令牌不允许您访问 <这些工作表的em> contents ,除非已明确授予SysAdmin用户访问工作表的权限。当您尝试检索工作表时,您收到“未找到”错误,因为未明确授予SysAdmin用户访问Smartsheet中该工作表的权限。

要实际检索“列表组织表”响应中列出的工作表,您需要将假设用户标头添加到“获取工作表”API请求中以模拟工作表所有者。您可以在此处找到有关假设用户标题的文档:https://smartsheet-platform.github.io/api-docs/#http-headers