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'