0

this is my code:

import logging
import os
from dotenv import load_dotenv

load_dotenv('dic.env')
httpSite = os.getenv('httpSite')
emaila = os.getenv('emaila')
password = os.getenv('password')


from shareplum import Site
from shareplum import Office365
from datetime import datetime

# Configurez le journal pour enregistrer les messages dans un fichier
current_time = str(datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
logging.basicConfig(level=logging.INFO, filename='download_{}.log'.format(current_time), filemode='w', format='%(asctime)s - %(message)s')




# Vous devez d'abord vous connecter à votre compte SharePoint
try:
    authcookie = Office365(httpSite, username=emaila, password=password).GetCookies()
    logging.info('Connecté avec succès à SharePoint')
except Exception as e:
    logging.error('Erreur lors de la connexion à SharePoint: %s', e)


site = Site(httpSite, authcookie=authcookie)


# Récupérez la liste de tous les fichiers de la racine du site
root_folder = site.ListFolder('Shared%20Documents')
all_files = root_folder.GetListItems()

# Fonction récursive pour télécharger tous les fichiers d'un dossier et de ses sous-dossiers
def download_files(folder, local_path):
    # Créez le répertoire local s'il n'existe pas encore
    if not os.path.exists(local_path):
        os.makedirs(local_path)

    # Récupérez la liste de tous les fichiers dans ce dossier
    files = folder.GetListItems()

    # Pour chaque fichier, téléchargez-le sur votre ordinateur local
    for file in files:
        if not file['FileLeafRef'].endswith('.cab'):
            try:
                file_content = site.GetFile(file['FileRef']).content
                open(os.path.join(local_path, file['FileLeafRef']), 'wb').write(file_content)
                logging.info('Téléchargement réussi: %s', file['FileLeafRef'])
            except Exception as e:
                logging.error('Erreur lors du téléchargement de %s: %s', file['FileLeafRef'], e)

    # Récupérez la liste de tous les sous-dossiers de ce dossier
    sub_folders = folder.GetFolders()

    # Pour chaque sous-dossier, appelez la fonction récursivement
    for sub_folder in sub_folders:
        download_files(sub_folder, os.path.join(local_path, sub_folder.name))

# Appelez la fonction pour télécharger tous les fichiers de la racine du site
download_files(root_folder, '.')

I get an error on

root_folder = site.ListFolder('Shared%20Documents')

in fact site is an object 'share plum.site._Site2007' and my variable httpSite has it's value set to https://mysharepoint.sharepoint.com

I want to download all of the files from all of my sites but it doesn't seem to be working as I did not specify /sites/sitename part within my variable httpSite.

So I would like to retrieve a list of my sites and to execute the above code for all my sites...

Error is

AttributeError: '_Site2007' object has no attribute 'ListFolder'

jimas13
  • 597
  • 5
  • 19

0 Answers0