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

通过That,我可以看到我需要的所有东西:

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)

谢谢您的帮助

最佳答案

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

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

10-07 19:46