Как получить дерево папок с помощью Smartsheets API Python
Я пытаюсь получить листы с помощью Users.list_org_sheets(include_all=True) из API Python SDK.
С этим я могу видеть все, что мне нужно:
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 ответ
Ситуация, которую вы описываете, связана с тем, как работают разрешения в Smartsheet. Используя токен SysAdmin, вы можете успешно получить список всех листов, принадлежащих членам учетной записи, но токен SysAdmin не позволит вам получить доступ к содержимому этих листов, если только этому пользователю SysAdmin явно не предоставлен доступ к листам. Вы получаете ошибку "not found", когда пытаетесь получить лист, потому что пользователю SysAdmin явно не предоставлен доступ к этому листу в Smartsheet.
Чтобы на самом деле получить лист, который указан в ответе "Список организационных листов", вам нужно добавить заголовок Assume-User в запрос API "Получить лист" для олицетворения владельца листа. Вы можете найти документацию по заголовку Assume-User здесь: https://smartsheet-platform.github.io/api-docs/.