Office365-rest-python-client: Sin carpeta, salida de archivos / sin error

Creado en 13 mar. 2019  ·  12Comentarios  ·  Fuente: vgrem/Office365-REST-Python-Client

Hola,

mi objetivo es imprimir el contenido de una biblioteca / lista de documentos del sitio de sharepoint
y estoy tratando de averiguar por qué no obtengo ningún resultado / ningún error.

Mi URL https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx
apunta a Documentos que contienen 2 carpetas y 1 archivo, pero parece que no puedo verlo ejecutando este script.
Cambiar list_object de "Documentos compartidos" a títulos alternativos no hace ninguna diferencia.

¿Me estoy perdiendo algo obvio aquí, por favor? Cualquier ayuda será muy apreciada.

Gracias.

Marcel

desde office365.runtime.auth.authentication_context import AuthenticationContext
desde office365.sharepoint.client_context import ClientContext

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

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

Todos 12 comentarios

por cierto usando Office365-REST-Python-Client (2.1.1) y python 3.6.4

¡Saludos!

Desafortunadamente, no puedo detectar ningún problema con el ejemplo proporcionado, todo se ve bien para mí.

De la siguiente descripción:
_apunta a Documentos que contienen 2 carpetas y 1 archivo_

¿Podría ser que los archivos no se almacenan debajo de la carpeta raíz sino en la subcarpeta?

De todos modos, ¿podría probar este enfoque solo para asegurarse de que los artículos se devuelvan o no?

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

Hola,
Obtengo lo siguiente cuando ejecuto tu código:

PS C: UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> .... python.exe .sharePoint_office365_test4.py
Rastreo (llamadas recientes más última):
Archivo ".sharePoint_office365_test4.py", línea 36, ​​en
ctx.execute_query ()
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_runtime_context.py", línea 36, ​​en execute_query
self.pending_request.execute_query ()
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", línea 32, en execute_query
return self.execute_pending_queries ()
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", línea 38, en execute_pending_queries
respuesta = self.execute_request_direct (solicitud)
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py", línea 109, en execute_request_direct
self.context.ensure_form_digest (request_options)
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py", línea 27, en secure_form_digest
self.request_form_digest ()
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py", línea 39, en request_form_digest
payload = response.json ()
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesrequestsmodels.py", línea 897, en json
return complexjson.loads (self.text, ** kwargs)
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libjson__init __. Py", línea 354, en cargas
devolver _default_decoder.decode (s)
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py", línea 339, en decodificación
obj, end = self.raw_decode (s, idx = _w (s, 0) .end ())
Archivo "C: UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py", línea 362, en raw_decode
elevar JSONDecodeError ("Valor esperado", s, err.value) de Ninguno
json.decoder.JSONDecodeError: Valor esperado: línea 2 columna 1 (carácter 2)
PS C: UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint>

Cuando imprimo la cadena en la excepción raw_decode, se ve así, consulte el archivo adjunto

Muchas gracias por tu tiempo.
Marcel

Mientras revisaba por segunda vez (y miraba la captura de pantalla proporcionada, ¡gracias por eso!), Descubrí que la URL proporcionada no parece ser válida:

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

}

La URL proporcionada corresponde a la URL absoluta de la página de vista de la biblioteca, pero lo que realmente ClientContext espera es siteUrl , así que en lugar de:

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

por favor dale una oportunidad:

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

Tienes toda la razón, eso fue todo.
Me alegraste el día, no puedo agradecerte lo suficiente.
metro.

Ejecutar su script ahora se imprime como 15 filas:

C: UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> .... python.exe .sharePoint_office365_test4.
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno
Nombre de archivo: Ninguno

mientras ejecuto mi (me refiero al tuyo :) script original obtengo el resultado esperado:
Nombre de archivo: Document.docx
Nombre de archivo: access_denied.txt

Mi consulta es, ¿cómo puedo enumerar todos los archivos en la carpeta "TEST" de arriba SS, por ejemplo. Eso es exactamente lo que estoy tratando de lograr.

No sé si podría dar más detalles sobre mi problema exacto. Al igual que está imprimiendo con éxito sus archivos en la raíz (o como se llame; Documentos):

Nombre de archivo: Document.docx
Nombre de archivo: access_denied.txt

Yo también puedo hacer eso. Pero prefiero obtener la lista de archivos en las carpetas.

¿Fue útil esta página
0 / 5 - 0 calificaciones