Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ La Programmation En Général _ Automatisation : Applescript ?

Écrit par : b00ss 27 May 2020, 14:28

Bonjour à tous,

Je souhaiterais, grâce à un Applescript (ou autre)... "convertir à la vollée" tout nouveau fichier CSV entrant en XLS...

Est-ce possible ?

Merci,

Écrit par : baron 27 May 2020, 17:58

Dans le Finder, tu sélectionnes un de tes fichiers .csv, tu demandes à Lire les informations (Cmd-i), tu choisis Ouvrir avec… (tu choisis Excel) et tu cliques sur Tout modifier.

Un double-clic sur un fichier .csv l'ouvrira alors directement dans Excel.

Écrit par : PBell 27 May 2020, 20:08

Bonsoir,
Sur le fond, tu as raison Baron: les fichiers CSV s'ouvriront avec Excel, mais ce n'est pas à proprement parlé une conversion car les fichiers restent CSV.

Voici un script qui peut être utilisé pour vraiment convertir:
1) en direct: il demande la sélection d'un dossier et converti tous les csv qui se trouvent dans ce dossier en .xlsx
2) via un drop de fichiers sur l'icône de ce script (enregistré en tant qu'application)
3) en action de dossier: il converti les csv déposé dans le dossier en xlsx.

La propriété deletecsv est mise à "true" par défaut.
Elle indique que le fichier csv d'origine doit être supprimé après conversion. Pour garder ce fichier, mettre "false".

CODE
-- Converti des fichiers csv en Excel
-- Attention:
-- pour pouvoir utiliser ce script en mode drop fichier, il faut l'enregistrer sous forme d'application
-- mais pour l'utiliser en action de dossier dans le dossier Folder Action de la bibliothèque il doit être enregistré en script

property deletecsv : true -- true si le fichier csv être supprimé après conversion


on run -- mode application ou script: demande un dossier et converti tous les csv contenus en XL
    -- sélection du dossier des fichiers csv à convertir
    tell application "Finder" to set liste to (document files of (choose folder "Sélectionner le dossier contentant les fichiers csv à convertir") whose name extension is "csv") as alias list
    repeat with uncsv in liste
        csv_to_xl(uncsv)
    end repeat
end run

on open liste -- mode application: drop des fichiers csv pour les convertir en XL
    repeat with uncsv in liste
        if (uncsv as string) ends with ".csv" then csv_to_xl(uncsv)
    end repeat
end open

on adding folder items to ceDossier after receiving fichiers -- mode script
    -- il faut filtrer les fichiers de type csv ajoutés au dossier
    set liste to {}
    tell application "Finder"
        repeat with un_fichier in fichiers
            set f to file un_fichier
            if (name of f ends with "csv") then set end of liste to un_fichier
        end repeat
    end tell
    repeat with uncsv in liste
        csv_to_xl(uncsv)
    end repeat
end adding folder items to


on csv_to_xl(f)
    tell application "Microsoft Excel"
        open f
        set wb to active workbook
        set XLfichier to (text 1 thru -4 of (f as string)) & "xslx"
        save workbook as wb filename XLfichier
        close wb
    end tell
    if deletecsv then
        tell application "Finder" to delete f
    end if
end csv_to_xl


J'ai un souci avec l'action de dossier.
Si le script est enregistré en tant qu'application dans le dossier des folder action script de la bibliothèque, il ne se lance pas.
J'ai du le laisser en mode script pour l'utiliser. Si quelqu'un peut m'indiquer pourquoi...? Je précise que ce n'est pas du aux droits ou autorisations que j'ai bien définis dans les préférences. (je suis sous El Capitain).

Cordialement

Écrit par : b00ss 28 May 2020, 12:50

Merci beaucoup 😉

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)