0 votes

Besoin d'un AppleScript pour fusionner tous les fichiers .CSV en excluant l'enregistrement d'en-tête de tous les fichiers sauf un.

J'ai cherché une solution à ce problème et j'ai trouvé des moyens sympas de le faire en utilisant la ligne de commande. Cependant, j'aimerais utiliser AppleScript afin de pouvoir l'incorporer dans d'autres scripts par la suite. Je dois "fusionner" tous les fichiers .CSV d'un dossier en un seul fichier .CSV. Le dossier contiendra environ 10 fichiers (le nombre varie chaque jour), chacun contenant quelques centaines d'enregistrements. Les en-têtes sont les mêmes pour chaque fichier, je dois donc conserver le premier en-tête et supprimer l'en-tête de tous les autres. En fin de compte, j'aimerais que le fichier de sortie se trouve dans le même dossier et qu'il porte le même nom que le premier fichier, avec une légère modification comme suit. Les noms de fichiers actuels ressemblent à ceci : IC-Nom de l'école YYYY-YBPoseExport.CSV J'aimerais remplacer le nom de l'école par quelque chose comme "Combiné" Je suis novice en la matière et ne sais pas par où commencer. Toute aide serait grandement appréciée.

1voto

OnePablo Points 1
to mergeCSVFiles at path as «class furl»
        local path, tmp

        set (path) to path as text
        get the path & "newfile.tmp"
        set tmp to the result's POSIX path

        close access (open for access tmp)
        set eof of tmp to 0

        set my text item delimiters to {linefeed, "IC-", space}

        tell application id "com.apple.SystemEvents"
                tell (the folder path's files whose name extension = "csv")
                        get the first file's POSIX path
                        read the result using delimiter linefeed
                        write "" & result & linefeed to tmp as "utf8"

                        repeat with f in rest of (get POSIX path of files)
                                read f using delimiter linefeed
                                write (rest of result as text) & linefeed ¬
                                        to tmp as "utf8" starting at eof
                        end repeat

                        set suffix to the last text item of (get some file's name)
                end tell

                set ICCombined to "IC-Combined" & space & the suffix
                set the name of file tmp to ICCombined
                get the path of file ICCombined in the folder path
        end tell

        tell application id "com.apple.finder" to activate (reveal the result)
end mergeCSVFiles

Ce gestionnaire peut recevoir un chemin d'accès absolu (complet) au dossier contenant le fichier .csv les fichiers à fusionner. Au départ, un fichier vierge est créé sous le nom de "newfile.tmp" dans lequel le contenu intégral de la première .csv est écrit. Les autres .csv Les fichiers sont lus dans leur intégralité et ajoutés au fichier "newfile.tmp" à l'exception de leurs premières lignes (leurs en-têtes).

Une fois la fusion terminée, "newfile.tmp" est renommé en "IC-Combined <suffix>.csv"<suffix> est obtenu à partir de l'un des autres .csv Les noms de fichiers sont considérés comme étant tout ce qui apparaît après le premier caractère espace, mais sans l'inclure. Si le nom de votre fichier d'exemple inclut le suffixe littéral, le fichier résultant s'appellera "IC-Combined YYYY-YBPoseExport.CSV" (bien qu'il soit préférable de conserver les minuscules dans les extensions de fichiers, car cela peut poser des problèmes dans les applications (y compris l'interpréteur de commandes) qui énumèrent les fichiers et effectuent des recherches sur les noms de fichiers en tenant compte de la casse, ce qui est la norme sur les systèmes de type UNIX).

Enfin, le fichier est révélé dans Recherche qui coïncidera avec son changement de nom.

Pour invoquer le gestionnaire, voici un exemple :

mergeCSVFiles at "/Users/CK/Documents/Some Folder"

Il ne renvoie aucune valeur.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X