Obtenir un nom de fichier via "choose file name". Imaginons qu'on veuille enregistrer un fichier sur le disque de manière interactive. On va donc demander à l'utilisateur de choisir un dossier où l'enregistrer et un nom. Le Finder va afficher la fenêtre de dialogue habituelle. Toutefois, le résultat renvoyé par la fonction "choose file name" est une de type file url. C'est-à-dire qu'on obtient le chemin d'accès à un fichier qui n'existe pas encore. Dans l'exemple qui suit, on va gérer les 2 cas possibles : (1) le fichier doit être créer et (2) le fichier doit être écrasé.
Le Script : tell application "Finder" setfichier_cible_sauvegardeto choose file name with prompt "Choisissez un dossier pour enregistrer" default name "toto.txt" try setfichier_a_ecraserto(fichier_cible_sauvegardeas string)as alias
do shell script ("rm " & (POSIX path of (fichier_cible_sauvegardeas string))) end try
set AppleScript's text item delimiters to{":"} setmes_elementsto{}& text items of(fichier_cible_sauvegardeas string) setnom_de_la_cibleto last item ofmes_elements setchemin_acces_vers_fichierto((reverse of rest of reverse ofmes_elements)as string)&":" setla_cibleto make new file at alias chemin_acces_vers_fichier with properties {name:nom_de_la_cible, creator type:"R*ch", file type:"TEXT"} setfichier_cibleto(chemin_acces_vers_fichier & nom_de_la_cible)as alias end tell
log fichier_cible
Explications : On a demandé à l'utilisateur de choisir un nom pour sauvegarder et un dossier de destination. Il faut alors créer le fichier (voir "Créer un fichier vide") s'il n'existe pas, sinon effacer le fichier existant et créer un nouveau.
Avec la fonction "try", on essaie de créer un alias vers ce fichier (dont on connait le chemin d'accès). Si cette opération réussit, c'est que le fichier existe, alors on utlise "do shell script" afin qu'il soit réellement effacé et non pas juste déplacé dans la poubelle. Si cette opération échoue, c'est que le fichier n'existe pas, alors on va le créer.
On connait le chemin d'accès au fichier (fichier_cible_sauvegarde), on va donc séparer le nom du fichier (dernier élément du chemin d'accès) et le dossier de destination (tout le chemin d'accès sans le nom du fichier). On a alors tout les éléments nécessaires pour créer le fichier sur le disque.
Le fichier est alors créer et un alias vers ce fichier existe : "fichier_cible".
Astuces : Le fichier créé est vide. Il faudra le remplir ultérieurement.(voir "Ecrire dans un fichier").
La dernière ligne "log fichier_cible" ne sert à rien d'autre qu'illustrer l'exemple.