Appleworks vers Word via Applescript

Publié : 24.04.2009 - 18h23 par ndubau

Bonsoir,
J'ai quelques milliers de notes de lectures saisies dans Appleworks ; cet outil a convenu parfaitement au détail près que mes échanges avec d'autres sont compliqués pas le format propriétaire de cet intégré.
Je n'ai guère d'enthousiasme à l'idée de répéter à l'infini Fichier / Ouvrir et choisir / Enregistrer sous.. / Fixer format rtf et valider !!!!
Auriez-vous connaissance d'un applescript qui se chargerait de m'alléger la vie ? J'ai bien trouvé ceci mais qui ne semble pas fonctionner sous Leopard et iMac 24.

Code : Tout sélectionner

on open fileList
   repeat with i in fileList
      set allinfo to info for i
      if allinfo's file type is not "CWWP" then exit repeat
      tell application "AppleWorks 6"
         activate
         open (i)
         set MyName to i as string
         
         set PathNameLength to length of MyName
         repeat with n from PathNameLength to 1 by -1
            set fileSeparator to character n of MyName
            if fileSeparator is ":" then exit repeat
         end repeat
         set truncate to PathNameLength - (n + 27)
         if truncate > 0 then
            set NewName to characters 1 thru (PathNameLength - truncate) ¬
               of MyName as string
         else
            set NewName to MyName as string
         end if
         
         tell application "Finder"
            set AppleScript's text item delimiters to ":"
            set thename to (last text item of NewName)
            set AppleScript's text item delimiters to ""
         end tell
         save document 1 in file ("Macintosh HD:Desktop Folder:" & thename & ".rtf") as file type "RTF" using translator "RTF"
         close document 1 saving no
      end tell
   end repeat
   
   repeat with i in fileList
      set allinfo to info for i
      if allinfo's file type is not "CWSS" then exit repeat
      tell application "AppleWorks 6"
         activate
         open (i)
         set MyName to i as string
         
         set PathNameLength to length of MyName
         repeat with n from PathNameLength to 1 by -1
            set fileSeparator to character n of MyName
            if fileSeparator is ":" then exit repeat
         end repeat
         set truncate to PathNameLength - (n + 27)
         if truncate > 0 then
            set NewName to characters 1 thru (PathNameLength - truncate) ¬
               of MyName as string
         else
            set NewName to MyName as string
         end if
         
         tell application "Finder"
            set AppleScript's text item delimiters to ":"
            set thename to (last text item of NewName)
            set AppleScript's text item delimiters to ""
         end tell
         save document 1 in file ("Macintosh HD:Desktop Folder:" & thename & ".dbf") as file type "DBF" using translator "DBF"
         close document 1 saving no
      end tell
   end repeat
end open


Merci de vos pistes
Noêl


Re: Appleworks vers Word via Applescript

Publié : 26.04.2009 - 8h25 par Tom25

Je pourrai regarder ton script dans quelques temps* si personne ne le fait, mais pour l'instant je ne peux pas.

Une semaine environ car je serai en déplacement, donc patiente un peu, ça semble possible ton truc.


Re: Appleworks vers Word via Applescript

Publié : 26.04.2009 - 8h46 par ndubau

Aucun problème pour patienter ! Ton aide même dans une semaine sera toujours appréciée.
A bientôt donc et bonne semaine,
Noël


Re: Appleworks vers Word via Applescript

Publié : 27.04.2009 - 11h42 par Tom25

Bon, j't'y ai fait avant de partir pour ma folle semaine de foire à Paris.

Tu copies le code ci-dessus, tu le colles dans un nouveau document Éditeur de scripts puis tu cliques le bouton Play (Exécuter).
Le script te demandera de choisir le dossier contenant contant tes docs AppleWorks, choisis-le.
Il t'ouvrira un par un tous les fichiers de type "CWWP" avec extension ".cwk" (soit les documents AppleWorks) et te les réenregistrera dans ce même dossier en RTF.

Si tu regardes le code, tu trouvera peut-être des lignes inutiles, mais j'ai repris un de mes scripts pour gagner du temps et éviter de tout réécrire. J'ai essayé de faire à peu près propre.

Si ça te casse les coui… qu'à chaque fois il te demande si tu veux sauvegarder le fichier machin, cherches la ligne display dialog "Sauvegarder le fichier '" & DossDocsAppWorksT & NouvNom & "' ?" et ajoute "-- " devant, ça aura pour effet de la désactiver comme si c'était un commentaire.

Je ne gère pas les boutons de mes Display Dialog, j'aurais pu écrire "Enregistrer", "Continuer" etc. mais dans ce cas j'aurais dû gérer chaque cas. Là tu cliques Ok pour continuer, et Annuler pour arrêter le script.

J'aurais pu faire de la récurence, c'est à dire aller chercher chaque fichiers contenus dans chaque sous-dossier du dossier de départ, puis dans chaque sous-sous-dossier etc. Ce n'est pas trop compliqué mais ça aurait compliqué le script, et je ne savais pas si tu en avais besoin. Il te faudra donc choisir chacun de tes dossiers contenant des fichiers AppleWorks.

Pour finir, vu que je sauvegarde dans le même dossier que le fichier d'origine, tries (menu Rangement) ton dossier par date de modification ou par type pour avoir tous les docs convertis à la suite.

Code : Tout sélectionner


-- Voir ici : http://forum.macbidouille.com/index.php?showtopic=293698

property DossDocsAppWorksT : "MBook HD2:Tampon:TestAppWorks:" -- Entrer ici le path de son dossier iTunes Music. Vide retournera doss par défaut soit '~:Documents:'

tell application "Finder"
   activate -- "Finder"
   if not (((AppleScript's text item delimiters) is "") or ((AppleScript's text item delimiters) is {""})) then
      beep
      display dialog "AppleScript's text item delimiters est resté à '" & ((AppleScript's text item delimiters) as text) & "'." & return & "Le remettre à '' et continuer ?"
      set AppleScript's text item delimiters to ""
   end if
   
   display dialog "Ce script enregistre des fichiers AppleWorks au format RTF. Il est péréférable de fermer tout document ouvert dans AppleWorks avant de continuer." with icon 1
   
   set DrapArret to false
   -- display dialog DossDocsAppWorksT & return & ((alias DossDocsAppWorksT) as text) -- Si DossDocsAppWorksT est un alias, le path changera pour être celui de la cible
   if (count of characters in DossDocsAppWorksT) > 2 then
      if ((characters 1 thru 2 of DossDocsAppWorksT) as text) is "~:" then
         -- display dialog "On remplace '~:' par path to home."
         set DossDocsAppWorksT to ((home as text) & ((characters 3 thru -1 of DossDocsAppWorksT) as text)) as text
      end if
   end if
   if exists (alias DossDocsAppWorksT) then
      set DossDocsAppWorksT to (alias DossDocsAppWorksT) as text -- Si DossDocsAppWorksT est un alias, le path changera pour être celui de la cible
   else
      set DossDocsAppWorksT to (folder "Documents" of home) as text
   end if
   
   set TampElt to choose folder with prompt "Sélectionnez le dossier contenant vos documents AppleWorks :" default location alias DossDocsAppWorksT
   -- Ce n'est pas la peine de mettre  without multiple selections allowed and empty selection allowed  car ça l'est par défaut
   if TampElt is false then
      -- En fait le script s'arrête automatiquement
      set DrapArret to true -- return -- Le script s'arrête car on a cliqué Annuler
   else
      set DossDocsAppWorks to TampElt
      set the clipboard to DossDocsAppWorks as text -- Pour définir un autre dossier iTunes Music par défaut, le coller dans les Property au début du script
      -- display dialog (DossDocsAppWorks as text) & return & "Class : " & class of DossDocsAppWorks
   end if
   
   set the FolderContents to {} & items in DossDocsAppWorks as list -- Il faut mettre  as list  sinon un nom de fichier ne sera pas considéré comme un élément d'une liste mais chaque lettre du nom sera un élément      
   set MaListeFich to {} as list
   repeat with file_i in FolderContents
      set class_file_i to class of file_i
      if class_file_i is folder then
         set type_file_i to missing value -- "fold"
      else
         set type_file_i to file type of file_i -- as text --   missing value   si non défini
      end if
      -- display dialog "file_i :'" & file_i & "'" & return & "class : '" & (class_file_i as text) & "'    class : '" & class of class_file_i & "'" & return & "type : '" & (type_file_i as text) & "'"
      set Ext_file_i to name extension of file_i -- Vide "" si pas d'extension
      if Ext_file_i is not "" then set Ext_file_i to ("." & Ext_file_i) as text
      if (type_file_i is "CWWP") and (Ext_file_i is ".cwk") then
         set Nom_file_i to (name of file_i) as text
         set NomSsExt to (characters 1 thru (-((count of characters in Ext_file_i) + 1)) of (Nom_file_i as text)) as text
         set NouvNom to NomSsExt & ".rtf" as text
         if exists alias (DossDocsAppWorksT & NouvNom) then -- Génére une erreur : alias (NouvNom of DossDocsAppWorks)
            beep
            display dialog "Le fichier '" & NouvNom & " existe déjà, il ne sera pas traité."
         else
            tell application "AppleWorks 6"
               open file_i
               display dialog "Sauvegarder le fichier '" & DossDocsAppWorksT & NouvNom & "' ?"
               save document 1 in file (DossDocsAppWorksT & NouvNom) as file type "TEXT" using translator «data TEXT525446» -- "RTF"
               close document 1 saving no
            end tell
         end if
         -- set MaListeFich to MaListeFich & {file_i} as list
      end if
   end repeat
   
   -- MaListeFich -- Contient tous mes fichiers AppleWorks
   
end tell -- "Finder"


Chez moi ça marche, je me suis créé 3 petits fichiers AppleWorks et je peux les ouvrir avec TextEdit une fois convertis en RTF.

Edit : Note : Un fichier AppleWorks avec des images les perds (les images) lors de la conversion en RTF, même si on fait enregistrer sous RTF "à la main" depuis AppleWorks.


Re: Appleworks vers Word via Applescript

Publié : 27.04.2009 - 13h46 par ndubau

Bonjour,
Merci Tom pour cette rapide adaptation de ce que tu possédais dans tes richesses ! Cela semble fonctionner correctement.
Juste une question pour lorsque tu seras de retour (j'ai vu que tu vendais des poëles et autres calorifères et c'est encore la saison !) : mes fichiers contenant des images sont très rares ; un format permettrait-il de les conserver ?
Bonne semaine de travail
Noël


Re: Appleworks vers Word via Applescript

Publié : 27.04.2009 - 16h16 par Tom25

Je ne sais pas, mais je n'ai pas réussi même manuellement (quelque soit le format de sauvegarde). J'ai essayé d'ouvrir le document AppleWorks depuis Word (puisqu'il peut) mais ça ne marche pas avec les doc .cwk avec image. Et même en sélectionnant tout le texte via menu Edition - Copier et en le collant dans TextEdit ou Word, ça me fout une * à la place de l'image.

Je ne vois pas d'autre solution que de réouvrir tes fichiers convertis et d'y recoller tes images.



Tu as fait un tour sur mon site :wink: . Je ne vends pas des poêles, je vends LES poêles. Les plus beaux, les plus fiables, les plus robustes, les plus performants, etc. des poêles du monde entier. Et ce en restant le meilleur marché !
:D :D :D


Re: Appleworks vers Word via Applescript

Publié : 23.05.2012 - 11h43 par sebk

Bonjour,
Ce dernier script marche parfaitement sur ma machine 10.6.8 et vous en remercie.
Pourriez vous le modifier afin qu'il aille chercher dans les sous-dossiers, je m'en sens totalement incapable et j'ai des centaines de fichiers concerné dans des dizaines de sous dossiers.
Grand merci.
S.


Re: Appleworks vers Word via Applescript

Publié : 24.05.2012 - 12h15 par soizic

Une idée sans aucune garantie :
regarder le "contenu" en cliquant sur le nom de fichier tout en gardant le doigt sur la touche contrôle ; il serait possible d'y trouver les images en format tiff. Ca a mâché chez moi pour d'anciens fichiers texte illisibles, mais ce n'était pas de Appleworks.


Re: Appleworks vers Word via Applescript

Publié : 28.05.2012 - 13h18 par Tom25

Je n'avais pas vu ton nouveau post, je suis sur iPad. Il faudra que je ré-ouvre le script que j'avais fait pour voir. Je ne me souvenais mêma pas de ce script.


Re: Appleworks vers Word via Applescript

Publié : 28.05.2012 - 18h18 par Tom25

Je ne me souviens plus si ça marchait bien avant, mais là ça ne me met pas l'extension .rtf , et je ne peux pas réouvrir les fichier.
Mais je n'ai rien changé au niveau du ré-enregistrement AppleWorks.
Les fichiers seront ré-enregistrés dans le même dossier que l'original (donc dans le sous-dossier si sous-dossier).
Mais attention, comme il ne change pas l'extension, ça écrasera l'original puisque le nom restera le même.
Sinon replaces

Code : Tout sélectionner

set NouvNom to (NomSsExt & ".rtf") as text

par, par exemple pour ajouter 1, :

Code : Tout sélectionner

set NouvNom to (NomSsExt & "1.rtf") as text


Code : Tout sélectionner

-- Voir ici : http://forum.macbidouille.com/index.php?showtopic=293698

property DossDocsAppWorksT : "MBook HD2:Tampon:TestAppWorks:" -- Entrer ici le path de son dossier. Vide retournera doss par défaut soit '~:Documents:'

tell application "Finder"
   activate -- "Finder"
   if not (((AppleScript's text item delimiters) is "") or ((AppleScript's text item delimiters) is {""})) then
      beep
      display dialog "AppleScript's text item delimiters est resté à '" & ((AppleScript's text item delimiters) as text) & "'." & return & "Le remettre à '' et continuer ?"
      set AppleScript's text item delimiters to ""
   end if
   
   display dialog "Ce script enregistre des fichiers AppleWorks au format RTF. Il est récursif, c'est à dire qu'il traitera tous les fichiers contenus dans les sous-dossiers. Il est péréférable de fermer tout document ouvert dans AppleWorks avant de continuer." with icon 1
   
   set DrapArret to false
   -- display dialog DossDocsAppWorksT & return & ((alias DossDocsAppWorksT) as text) -- Si DossDocsAppWorksT est un alias, le path changera pour être celui de la cible
   if (count of characters in DossDocsAppWorksT) > 2 then
      if ((characters 1 thru 2 of DossDocsAppWorksT) as text) is "~:" then
         -- display dialog "On remplace '~:' par path to home."
         set DossDocsAppWorksT to ((home as text) & ((characters 3 thru -1 of DossDocsAppWorksT) as text)) as text
      end if
   end if
   if exists (alias DossDocsAppWorksT) then
      set DossDocsAppWorksT to (alias DossDocsAppWorksT) as text -- Si DossDocsAppWorksT est un alias, le path changera pour être celui de la cible
   else
      set DossDocsAppWorksT to (folder "Documents" of home) as text
   end if
   
   set TampElt to choose folder with prompt "Sélectionnez le dossier contenant vos documents AppleWorks :" default location alias DossDocsAppWorksT
   -- Ce n'est pas la peine de mettre  without multiple selections allowed and empty selection allowed  car ça l'est par défaut
   if TampElt is false then
      -- En fait le script s'arrête automatiquement
      set DrapArret to true -- return -- Le script s'arrête car on a cliqué Annuler
   else
      set DossDocsAppWorks to TampElt
      set DossDocsAppWorksT to DossDocsAppWorks as text
      set the clipboard to DossDocsAppWorksT -- Pour définir un autre dossier par défaut, le coller dans les Property au début du script
      -- display dialog "Main" & return & DossDocsAppWorksT & return & "Class : " & class of DossDocsAppWorks
      
      Trait_CWK_RTF(DossDocsAppWorks) of me
      
   end if
end tell -- "Finder"

on Trait_CWK_RTF(CeDoss)
   tell application "Finder"
      activate -- "Finder"
      set CeDossT to CeDoss as text -- Ou ci-dessous
      -- set CeDossT to DossDocsAppWorksT -- Pour tout sauvegarder dans le dossier parent
      -- display dialog "SsProcess" & return & CeDossT & return & "Class : " & class of CeDoss
      set the FolderContents to {} & items in CeDoss as list -- Il faut mettre  as list  sinon un nom de fichier ne sera pas considéré comme un élément d'une liste mais chaque lettre du nom sera un élément      
      set MaListeFich to {} as list
      repeat with file_i in FolderContents
         set class_file_i to class of file_i
         if class_file_i is folder then
            -- Inutile : set type_file_i to missing value -- "fold"
            Trait_CWK_RTF(file_i as alias) of me
         else
            set type_file_i to file type of file_i -- as text --   missing value   si non défini
            -- display dialog "file_i :'" & file_i & "'" & return & "class : '" & (class_file_i as text) & "'    class : '" & class of class_file_i & "'" & return & "type : '" & (type_file_i as text) & "'"
            set Ext_file_i to name extension of file_i -- Vide "" si pas d'extension
            if Ext_file_i is not "" then set Ext_file_i to ("." & Ext_file_i) as text
            if (type_file_i is "CWWP") and (Ext_file_i is ".cwk") then
               set Nom_file_i to (name of file_i) as text
               set NomSsExt to (characters 1 thru (-((count of characters in Ext_file_i) + 1)) of (Nom_file_i as text)) as text
               set NouvNom to (NomSsExt & ".rtf") as text
               if exists alias (CeDossT & NouvNom) then -- Génére une erreur : alias (NouvNom of CeDoss)
                  beep
                  display dialog "Le fichier '" & NouvNom & " existe déjà, il ne sera pas traité."
               else
                  tell application "AppleWorks 6"
                     open file_i
                     display dialog "Sauvegarder le fichier '" & ((CeDossT & NouvNom) as text) & "' ?"
                     save document 1 in file ((CeDossT & NouvNom) as text) as file type "TEXT" using translator «data TEXT525446» -- "RTF"
                     close document 1 saving no
                  end tell
               end if
               -- set MaListeFich to MaListeFich & {file_i} as list
            end if
         end if
      end repeat
      -- MaListeFich -- Contient tous mes fichiers AppleWorks
   end tell -- "Finder"
end Trait_CWK_RTF