Office365-rest-python-client: Keine Ausgabe von folder.files/kein Fehler

Erstellt am 13. März 2019  ·  12Kommentare  ·  Quelle: vgrem/Office365-REST-Python-Client

Hi,

Mein Ziel ist es, den Inhalt einer Dokumentbibliothek/Liste einer Sharepoint-Site auszudrucken
und ich versuche herauszufinden, warum ich keine Ausgabe / keinen Fehler erhalte.

Meine URL https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx
zeigt auf Dokumente, die 2 Ordner und 1 Datei enthalten, aber ich kann es nicht sehen, wenn ich dieses Skript ausführe.
Das Ändern von list_object von "Shared Documents" zu alternativen Titeln macht keinen Unterschied.

Übersehe ich hier bitte etwas Offensichtliches? Jede Hilfe wäre sehr dankbar.

Dankeschön.

Marcel

aus office365.runtime.auth.authentication_context importieren AuthenticationContext
aus office365.sharepoint.client_context importieren 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',
}

if __name__ == '__main__':
context_auth = AuthenticationContext(url=app_settings['url'])
if 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"]))

Alle 12 Kommentare

übrigens mit Office365-REST-Python-Client (2.1.1) und Python 3.6.4

Grüße!

Leider kann ich bei dem bereitgestellten Beispiel keine Probleme feststellen, für mich sieht alles gut aus.

Aus der folgenden Beschreibung:
_zeigt auf Dokumente mit 2 Ordnern und 1 Datei_

Könnte es sein, dass Dateien nicht unter dem Stammordner gespeichert sind, sondern stattdessen in einem Unterordner?

Wie auch immer, könnten Sie diesen Ansatz bitte ausprobieren, um sicherzustellen, dass Artikel zurückgegeben werden oder nicht?

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

Hi,
Beim Ausführen Ihres Codes erhalte ich Folgendes:

PS C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> ....python.exe .sharePoint_office365_test4.py
Traceback (letzter Anruf zuletzt):
Datei ".sharePoint_office365_test4.py", Zeile 36, in
ctx.execute_query()
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_runtime_context.py", Zeile 36, in execute_query
self.pending_request.execute_query()
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", Zeile 32, in execute_query
return self.execute_pending_queries()
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", Zeile 38, in execute_pending_queries
antwort = self.execute_request_direct(request)
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", Zeile 109, in execute_request_direct
self.context.ensure_form_digest(request_options)
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py", Zeile 27, in secure_form_digest
self.request_form_digest()
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py", Zeile 39, in request_form_digest
Nutzlast = response.json()
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesrequestsmodels.py", Zeile 897, in json
return complexjson.loads(self.text, **kwargs)
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libjson__init__.py", Zeile 354, in Lasten
_default_decoder.decode(s) zurückgeben
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py", Zeile 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
Datei "C:UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py", Zeile 362, in raw_decode
JSONDecodeError("Wert wird erwartet", s, err.value) von None anheben
json.decoder.JSONDecodeError: Erwarteter Wert: Zeile 2 Spalte 1 (Zeichen 2)
PS C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint>

Wenn ich den String in der raw_decode-Ausnahme ausdrucke, sieht es so aus, siehe Anhang

Vielen Dank für Ihre Zeit.
Marcel

Bei der zweiten Überprüfung (und beim Betrachten des bereitgestellten Screenshots, danke dafür!), habe ich festgestellt, dass die angegebene URL nicht gültig zu sein scheint:

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

}

Die angegebene URL entspricht der _absoluten URL der Bibliotheksansichtsseite_, aber was eigentlich ClientContext erwartet, ist siteUrl , also statt:

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

bitte versuch es:

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

Du hast vollkommen recht, das war es.
Du hast meinen Tag bereichert, ich kann dir nicht genug danken.
m.

Wenn Sie Ihr Skript ausführen, werden jetzt 15 Zeilen ausgegeben:

C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> ....python.exe .sharePoint_office365_test4.
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner
Dateiname: Keiner

Während ich mein (ich meine dein :) Originalskript ausführe, erhalte ich das erwartete Ergebnis:
Dateiname: Document.docx
Dateiname: access_denied.txt

Meine Frage ist, wie kann ich zum Beispiel alle Dateien unter dem Ordner "TEST" von oben SS auflisten. Genau das versuche ich zu erreichen.

Ich weiß nicht, ob ich mein genaues Problem näher erläutern kann. So wie Sie Ihre Dateien erfolgreich im Stammverzeichnis (oder wie auch immer es heißt; Dokumente) drucken:

Dateiname: Document.docx
Dateiname: access_denied.txt

Auch ich kann das. Ich möchte jedoch eher die Liste der Dateien in den Ordnern abrufen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen