Office365-rest-python-client: Нет вывода folder.files / нет ошибок

Созданный на 13 мар. 2019  ·  12Комментарии  ·  Источник: vgrem/Office365-REST-Python-Client

Привет,

Моя цель - распечатать содержимое библиотеки / списка документов сайта sharepoint
и я пытаюсь понять, почему у меня нет вывода / ошибок вообще.

Мой URL https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx
указывает на Документы, содержащие 2 папки и 1 файл, но я не могу его увидеть, запустив этот скрипт.
Изменение list_object с «Общие документы» на альтернативные заголовки не имеет значения.

Я упустил что-то очевидное, пожалуйста? Любая помощь приветствуется.

Спасибо.

Марсель

из office365.runtime.auth.authentication_context импорт AuthenticationContext
из office365.sharepoint.client_context импорт ClientContext

app_settings = {
'url': ' https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx ',
'client_id': 'f638a093-aa8f-48c7-a4e6-998d7d1ee388',
'client_secret': 'xysjblahblah',
}

если __name__ == '__main__':
context_auth = AuthenticationContext (url = app_settings ['url'])
если context_auth.acquire_token_for_app (client_id = app_settings ['client_id'], client_secret = app_settings ['client_secret']):

    ctx = ClientContext(app_settings['url'], context_auth)

    list_object = ctx.web.lists.get_by_title("Shared Documents")
#list_object = ctx.web.lists.get_by_title("Documents")
#list_object = ctx.web.lists.get_by_title("FRAReporting")

    folder = list_object.root_folder        
    ctx.load(folder)
    ctx.execute_query()

    files = folder.files
    ctx.load(files)
    ctx.execute_query()

    for myfile in files:
        print("File name: {0}".format(myfile.properties["Name"]))

Все 12 Комментарий

кстати, используя Office365-REST-Python-Client (2.1.1) и python 3.6.4

Привет!

К сожалению, я не могу обнаружить никаких проблем с предоставленным примером, все выглядит хорошо.

Из приведенного ниже описания:
_ указывает на документы, содержащие 2 папки и 1 файл_

может быть, файлы хранятся не в корневой папке, а в подпапке?

В любом случае, не могли бы вы попробовать этот подход, чтобы убедиться, возвращаются ли товары или нет?

list_obj = context.web.lists.get_by_title(list_title)
qry = CamlQuery.create_all_items_query()
items = list_obj.get_items(qry)
context.load(items)
context.execute_query()
for cur_item in items:
    print("File name: {0}".format(cur_item.properties["Title"]))

image

Привет,
При запуске вашего кода я получаю следующее:

PS C: UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> .... python.exe .sharePoint_office365_test4.py
Отслеживание (последний вызов последний):
Файл ".sharePoint_office365_test4.py", строка 36, в
ctx.execute_query ()
Файл "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_runtime_context.py", строка 36, в execute_query
self.pending_request.execute_query ()
Файл "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", строка 32, в execute_query
вернуть self.execute_pending_queries ()
Файл "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", строка 38, в execute_pending_queries
response = self.execute_request_direct (запрос)
Файл "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", строка 109, в execute_request_direct
self.context.ensure_form_digest (параметры_запроса)
Файл "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py", строка 27, в файле sure_form_digest.
self.request_form_digest ()
Файл "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py", строка 39, в request_form_digest
полезная нагрузка = response.json ()
Файл «C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesrequestsmodels.py», строка 897, в формате json.
вернуть complexjson.loads (self.text, ** kwargs)
Файл «C: UsersfooAppDataLocalProgramsPythonPython36libjson__init __. Py», строка 354, загружается.
вернуть _default_decoder.decode (s)
Файл "C: UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py", строка 339, в декодировании
obj, end = self.raw_decode (s, idx = _w (s, 0) .end ())
Файл "C: UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py", строка 362, в raw_decode
поднять JSONDecodeError ("Ожидаемое значение", s, err.value) из None
json.decoder.JSONDecodeError: Ожидаемое значение: строка 2, столбец 1 (символ 2)
PS C: UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint>

Когда я распечатываю строку в исключении raw_decode, это выглядит так, см. Вложение

Большое спасибо за уделенное время.
Марсель

При повторном просмотре (и просмотре предоставленного снимка экрана, спасибо за это!) Я обнаружил, что предоставленный URL-адрес не кажется действительным:

app_settings = {
'url': 'https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx',
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         needs to be site url  

}

Предоставленный URL-адрес соответствует _абсолютному URL-адресу страницы просмотра библиотеки_, но на самом деле ClientContext ожидает siteUrl , поэтому вместо:

https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx

пожалуйста, попробуйте:

https://my.jci.com/sites/FRAReporting/

Вы абсолютно правы, вот и все.
Ты сделал мой день, не могу тебя отблагодарить.
м.

Теперь при запуске вашего скрипта печатается как 15 строк:

C: UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> .... python.exe .sharePoint_office365_test4.
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет
Имя файла: Нет

при запуске моего (я имею в виду вашего :) оригинального скрипта я получаю ожидаемый результат:
Имя файла: Document.docx
Имя файла: access_denied.txt

Мой вопрос: как я могу, например, перечислить все файлы в папке «TEST» из SS выше. Это именно то, чего я пытаюсь достичь.

Не знаю, смогу ли я подробно описать мою проблему. Точно так же, как вы успешно печатаете свои файлы в корне (или как там это называется; Документы):

Имя файла: Document.docx
Имя файла: access_denied.txt

Я тоже могу это сделать. Но, скорее, хочется получить список файлов в папках.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги