Office365-rest-python-client: Pas de sortie dossier.files/pas d'erreur

Créé le 13 mars 2019  ·  12Commentaires  ·  Source: vgrem/Office365-REST-Python-Client

Salut,

mon objectif est d'imprimer le contenu d'une bibliothèque/liste de documents de site sharepoint
et j'essaie de comprendre pourquoi je n'obtiens aucune sortie/aucune erreur.

Mon URL https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx
pointe vers des documents contenant 2 dossiers et 1 fichier mais je n'arrive pas à le voir en exécutant ce script.
Changer list_object de "Documents partagés" en titres alternatifs ne fait aucune différence.

Ai-je raté quelque chose d'évident ici, s'il vous plaît? Toute aide serait très appréciée.

Merci.

Marcel

depuis office365.runtime.auth.authentication_context importer AuthenticationContext
depuis office365.sharepoint.client_context importer 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"]))

Tous les 12 commentaires

btw en utilisant Office365-REST-Python-Client (2.1.1) et python 3.6.4

Les salutations!

Malheureusement, je ne suis pas en mesure de détecter les problèmes avec l'exemple fourni, tout semble bien pour moi.

De la description ci-dessous:
_pointe vers Documents contenant 2 dossiers et 1 fichier_

se pourrait-il que les fichiers ne soient pas stockés sous le dossier racine mais sous le sous-dossier à la place ?

Quoi qu'il en soit, pourriez-vous s'il vous plaît essayer cette approche juste pour vous assurer que les articles sont retournés ou non ?

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

Salut,
J'obtiens ce qui suit lors de l'exécution de votre code :

PS C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> ....python.exe .sharePoint_office365_test4.py
Traceback (appel le plus récent en dernier) :
Fichier ".sharePoint_office365_test4.py", ligne 36, dans
ctx.execute_query()
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_runtime_context.py", ligne 36, dans execute_query
self.pending_request.execute_query()
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", ligne 32, dans execute_query
retourner self.execute_pending_queries()
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", ligne 38, dans execute_pending_queries
réponse = self.execute_request_direct(request)
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", ligne 109, dans execute_request_direct
self.context.ensure_form_digest(request_options)
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py", ligne 27, dans assurer_form_digest
self.request_form_digest()
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py", ligne 39, dans request_form_digest
charge utile = réponse.json()
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesrequestsmodels.py", ligne 897, en json
return complexjson.loads(self.text, **kwargs)
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libjson__init__.py", ligne 354, dans les charges
retourner _default_decoder.decode(s)
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py", ligne 339, en décodage
obj, fin = self.raw_decode(s, idx=_w(s, 0).end())
Fichier "C:UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py", ligne 362, dans raw_decode
augmenter JSONDecodeError("Valeur attendue", s, err.value) de None
json.decoder.JSONDecodeError : valeur attendue : ligne 2 colonne 1 (car 2)
PS C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint>

Lorsque j'imprime la chaîne dans l'exception raw_decode, cela ressemble à ceci, veuillez consulter la pièce jointe

Merci beaucoup pour votre temps.
Marcel

En examinant pour la deuxième fois (et en regardant la capture d'écran fournie, merci pour cela!), J'ai remarqué que l'URL fournie ne semble pas valide :

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

}

L'URL fournie correspond à _l'URL absolue de la page d'affichage de la bibliothèque_ mais ce que ClientContext attend réellement est

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

s'il vous plaît essayez:

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

Vous avez tout à fait raison, c'était tout.
Vous avez fait ma journée, je ne peux pas vous remercier assez.
m.

L'exécution de votre script affiche maintenant 15 lignes :

C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> ....python.exe .sharePoint_office365_test4.
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun
Nom du fichier : aucun

lors de l'exécution de mon (je veux dire le vôtre :) script original, j'obtiens le résultat attendu :
Nom du fichier : Document.docx
Nom du fichier : access_denied.txt

Ma requête est, comment puis-je répertorier tous les fichiers sous le dossier "TEST" de SS ci-dessus, par exemple. C'est exactement ce que j'essaie de réaliser.

Je ne sais pas si je pourrais détailler mon problème exact. Tout comme vous imprimez avec succès vos fichiers à la racine (ou quel que soit son nom ; Documents) :

Nom du fichier : Document.docx
Nom du fichier : access_denied.txt

Moi aussi je peux le faire. Mais, voulez plutôt obtenir la liste des fichiers dans les dossiers.

Cette page vous a été utile?
0 / 5 - 0 notes