Le blog francophone consacré
aux technologies Esri

Tuto6: Automatiser le chargement de documents sur votre portail ArcGIS

Je poursuis ma série de tutoriels consacrés à l'usage de l'API ArcGIS for Python. Aujourd'hui, je vous propose de voir comment automatiser le chargement de documents (Excel, Word, PowerPoint, PDF, ...) sur votre portail ArcGIS. Ce tutoriel, que vous pourrez compléter avec d'autres types de fichiers supportés par les portails ArcGIS, montre également comment créer un dossier et partager les éléments une fois ajoutés au portail ArcGIS.

     
Le Notebook présenté ci-dessous est téléchargeable ici.
Création de l'objet GIS et authentification sur le portail ArcGIS.
In [1]:
from IPython.display import display
from arcgis.gis import GIS
import os, pathlib
gis = GIS("https://www.arcgis.com", "username", "password")
display(gis)
Ci-dessous quelques variables permettant de paramétrer le chemin d'accès aux fichiers locaux et le filtre sur les extensions de fichiers (par exemple pour ne prendre que les fichiers PDF, Excel, ...). Vous indiquerez également le nom du dossier à créer sur le portail. Si aucun dossier n'est précisé, les fichiers seront charger à la racine de vos contenus. Les options de partage des documents chargés se paramètrent vis les variables share_with_everyone et share_with_organization.
In [2]:
# Chemin d'accès aux photos
data_dir = "/Users/glavenu/Downloads/Docs"
# Extension des fichiers, Attention ce paramètre est case-sensitive, 
# '*.*' peut être utilisé pour charger l'ensemble des fichiers
document_ext = "*.*"  
portal_folder = "Docs"
share_with_everyone=False
share_with_organization=True
La fonciton ci-dessous permet de retourner le type de document en fonction de l'extension du fichier. Vous pouvez compléter cette liste avec d'autres types de document supportés par les portails ArcGIS.
In [3]:
def GetDocType(ext):
    doc_type=None
    document_types={".doc":"Microsoft Word",
                    ".docx":"Microsoft Word",
                    ".xls":"Microsoft Excel",
                    ".xlsx":"Microsoft Excel",
                    ".ppt":"Microsoft Powerpoint",
                    ".pptx":"Microsoft Powerpoint",
                    ".pdf":"PDF"}
    doc_type=document_types.get(ext.lower())
    return doc_type
La fonction ci-dessous retourne l'image miniature correspondant au type de fichier pour être utilisée lors de la création de l'élément sur le portail ArcGIS.
In [4]:
def GetDocIcon(doc_type):
    doc_icon=None
    document_icons={"Microsoft Word":"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Microsoft_Word_2013_logo.svg/440px-Microsoft_Word_2013_logo.svg.png",
                    "Microsoft Excel":"https://upload.wikimedia.org/wikipedia/fr/c/cf/Logo_Microsoft_Excel_2013.png",
                    "Microsoft Powerpoint":"https://upload.wikimedia.org/wikipedia/fr/c/c2/Logo_Microsoft_PowerPoint_2013.png",
                    "PDF":"https://fr.cdn.v5.futura-sciences.com/buildsv6/images/largeoriginal/d/d/c/ddc35b596c_77727_pdfpaysage.jpg"}
    doc_icon=document_icons.get(doc_type)
    return doc_icon
Création du dossier dans les contenus de l'utilisateur, si ce dernier n'existe pas.
In [5]:
# Creation du dossier sur le portail
if portal_folder is not "":
    try:
        gis.content.create_folder(portal_folder)
    except:
        pass
    
# Recupereration et filtrage de la liste des fichiers 
document_file_list = [str(doc_file) for doc_file in pathlib.Path(data_dir).glob(document_ext)]

print("Nombre de documents trouvés: " + str(len(document_file_list)))
Nombre de documents trouvés: 5
Chargement de chaque fichier sur le portail, puis partage de l'élément créé.
In [6]:
for current_doc_file in document_file_list:
    try:
        path, DocName = os.path.split(current_doc_file)
        DocType=GetDocType('.'+ str(current_doc_file).split(".")[1])
        DocIcon=GetDocIcon(DocType)
        item = gis.content.add({'type': DocType, 'title': DocName.lower() , 'tags': 'Document,' + DocType}, current_doc_file, DocIcon,None,None,portal_folder)  
        item.share(share_with_everyone, share_with_organization, None, False)
        display(item)
    except:
        pass
    
print('Import des documents terminé')
reglement_plu.pdf
PDF by glavenudev
Last Modified: novembre 25, 2018
0 comments, 0 views
mesures_2017.xlsx
Microsoft Excel by glavenudev
Last Modified: novembre 25, 2018
0 comments, 0 views
mesures_2016.xlsx
Microsoft Excel by glavenudev
Last Modified: novembre 25, 2018
0 comments, 0 views
seminaire_hub_et_open_data.ppt
Microsoft Powerpoint by glavenudev
Last Modified: novembre 25, 2018
0 comments, 0 views
rapport_activité_2018.docx
Microsoft Word by glavenudev
Last Modified: novembre 25, 2018
0 comments, 0 views
Import des documents terminé

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article: