Coller un élément à l'aide d applescript

Résolu/Fermé
alfadr Messages postés 21 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 20 février 2008 - 23 nov. 2007 à 10:27
 nono95400 - 19 févr. 2008 à 16:38
Bonjour, j'aimerai crée un script qui récupére un nom du presse papier pour et ainsi renommer un dossier avec ce nom là.

Je m'explique, ayant une base de données pour gérer mes dessins, j'ai fait un script dans ma base de donné pour que le No de dessin (c'est ainsi que je classe mes projets) soit automatiquement copié, le problème est au niveau du finder, comment pouvoir indiquer à applescript que l'on veux coller le presse papier dans un dossier pour le renommer du nom d No de dessin.

Merci de votre aide à bientot.

alfadr

16 réponses

En AppleScript, pour obtenir le contenu du presse papier, il suffit d'appeler le contenu de clipboard (autrement dit presse-papier en anglais :p)

tell application "Finder"
	activate
	set leContenuDuPressePapier to the clipboard as string
	
	set leDossierARenommer to the folder "NOM_DU_DOSSIER" of the disk "NOM_DU_DISQUE_DUR"
	set the name of leDossierARenommer to leContenuDuPressePapier
end tell


Je n'ai pas bien compris ton problème, si ce n'était pas ça, n'hésite pas à préciser.
1
Alors je remarque que vous avez utilisé la fonction d'enregistrement d'AppleScript ;-) C'est correct mais il y a des instruction qui ne servent à rien lol

Ce code suffit largement pour créer un dossier :
tell application "Finder" to make new folder at folder "Desktop" of folder "BP" of folder "Users" of startup disk with properties {name:"dossier sans titre 4"}


Maintenant, on va assembler votre script avec le mien afin de créer un dossier nommé avec le contenu du presse papier :
tell application "Finder"
	activate
	set leContenuDuPressePapier to the clipboard as string
	
	set leNouveauDossier to make new folder at folder "Desktop" of folder "BP" of folder "Users" of startup disk with properties {name:leContenuDuPressePapier}
	open leNouveauDossier
end tell


Donc là, ce script va créer un dossier ayant pour nom le contenu du presse papier, sur votre bureau (folder "Desktop") situé dans votre dossier d'utilisateur (folder "BP") situé dans votre dossier Utilisateurs (folder "Users") qui est situé dans votre disque dur de démarrage.


Sinon, pour une version un peu plus "universelle", c'est à dire qui fonctionnera sur n'importe quel Mac :
tell application "Finder"
	activate
	set leContenuDuPressePapier to the clipboard as string
	set leNouveauDossier to make new folder at (path to desktop) as string with properties {name:leContenuDuPressePapier}
	open leNouveauDossier
end tell


Ici, on n'indique pas le chemin d'accès complet vers le dossier Desktop, on dit juste que il faut créer le dossier sur le bureau. Comme ça, pas besoins de changer le nom d'utilisateur dans le script lorsqu'il doit être exécuté sur une autre session ou un autre Mac.
1
dede74000 Messages postés 26978 Date d'inscription jeudi 5 avril 2007 Statut Contributeur Dernière intervention 19 janvier 2024 5 345
23 nov. 2007 à 13:45
Bonjour,

Tu aurais, peut-être, plus de chance en cherchant sur un site spécialisé !! Google est ton ami : https://www.google.com/search?client=safari&rls=fr&q=apple+script&ie=UTF-8&oe=UTF-8&gws_rd=ssl
0
alfadr Messages postés 21 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 20 février 2008 212
23 nov. 2007 à 22:10
en fait par exemple, je suis dans excel, je copie un texte:
ensuite ce texte qui est une variable (dessin01, dessin02, dessin03) j'aimerais pouvoir faire en sorte qu'un script et c'est donc la que je sèche. Faire un script qui permets de coller mon No de dessin dans un dossier en autres termes renommer mon dossier en mon nom de dessin, puis pouvoir enregistrer ce dossier dans mes documents.

exemple: j'ai le texte “ dessin05“ que je copie dans mon programme excel, je retourne sur le finder et j'ouvre mon script qui colle mon No de dessin donc “dessin05 en nom de dossier.

Voilà, en essayant de crée mon script je crée un nouveau dossier, ça pas de souci, je colle mon texte dessin05 d presse papier le problème c'est qu'il va chaque fois renommer mon dossier dessin05, alors que “dessin05“ est une variable.

Merci de vos réponses et merci de votre aide

Meilleures salutations

alfadr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alors le script que j'ai donné juste au dessus fonctionne pour le cas où le contenu du presse papier est le nom à utiliser.
Si en fait le presse papier contient le nom d'une variable Excel, AppleScript ne peut pas faire grand chose là. Il faudrait pouvoir copier la valeur de la variable et pas son nom.

Donc il faut copier la valeur de la variable dans le presse papier puis ensuite utiliser le script que j'ai écrit dans mon précédent message.
0
alfadr Messages postés 21 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 20 février 2008 212
24 nov. 2007 à 10:23
J'ai essayé le script que vous m'avez donné mais je ne comprends pas bien le fonctionnement, je ne sais pas bien quel élément il faut que je remplace pour que cela marche.

Message:

Erreur d'applescript

Erreur dans Finder: impossible d'obtenir folder “NOM_DU_DOSSIER“ of disk “NOM_DU_DISQUE_DUR".

je ne comprends pas par quel éléments je dois remplacer les deux noms en majuscule. je sais pas si ça peux aider mais je me susi fait un simple script pour créer un dossier sur mon bureau ce qui donne:

tell application "Finder"
activate
make new folder at folder "Desktop" of folder "BP" of folder "Users" of startup disk with properties {name:"dossier sans titre 4"}
select window of desktop
select window of desktop
select window of desktop
end tell

Merci pour votre aide précieuse
0
alfadr Messages postés 21 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 20 février 2008 212
24 nov. 2007 à 11:03
Super votre sicrpt mixé au mien fonctionne très bien!! merci beaucoup.

comment faire maintenant pour copier ou déplacer un dossier sur un serveur ou est il possible de le crée dicrecte sur le serveur???

Meilleures salutations

Meric pour toit alfadr
0
Alors, qu'entendez-vous par "serveur" ?

Est-ce un serveur en afp:// ou ftp:// ?
0
alfadr Messages postés 21 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 20 février 2008 212
24 nov. 2007 à 11:13
en réseaux par exemple en afp plûtôt et aussi si je veux créer ce dossier à un autre endroit que mon bureau par ex à la racine de BP.
ou bien sur un disque dur externe!!?=?
merci erncore

alfadr
0
Pour créer le dossier dans le dossier "BP", il suffit de remplacer "desktop" par "home folder" dans le script ;-)
tell application "Finder"
	activate
	set leContenuDuPressePapier to the clipboard as string
	set leNouveauDossier to make new folder at (path to home folder) as string with properties {name:leContenuDuPressePapier}
	open leNouveauDossier
end tell


Pour ce qui est de la création du dossier sur un disque dur externe, là il faut entrer le nom du disque dur dans le chemin d'accès (voir le premier script que j'ai envoyé avec les "of folder "NOM_DU_DOSSIER" of disk "NOM_DU_DISQUE".
Sinon, il existe un autre moyen : donner le choix à l'utilisateur de l'endroit où il faut créer le dossier :
tell application "Finder"
	activate
	
	set leContenuDuPressePapier to the clipboard as string
	
	set leCheminDAcces to (choose folder with prompt "Choisissez le dossier où vous souhaitez créer le dossier : " & leContenuDuPressePapier) as string
	
	set leNouveauDossier to make new folder at leCheminDAcces with properties {name:leContenuDuPressePapier}
	
	open leNouveauDossier
end tell


Ce dernier script permettra aussi de créer un dossier sur un serveur à condition que le Finder soit connecté dessus et qu'il possède les droits d'écriture dessus.
0
alfadr Messages postés 21 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 20 février 2008 212
24 nov. 2007 à 11:42
Nickel merci, encore une dernière petite chose j'aimerai que le dossier crée apparaissent en rouge ou totu autre couleur:

jai essayé de mixer votre script avec le mien mais ça done pas grand chose. voyez vous mêm
auriez vous un lien concernant le langage applescript!!! très intéressant en tout cas

voic imon script

tell application "Finder"
activate
set leContenuDuPressePapier to the clipboard as string

set leNouveauDossier to make new folder at folder "Desktop" of folder "BP" of folder "Users" of startup disk with properties {name:leContenuDuPressePapier}
set label index of folder {leContenuDuPressePapier} of folder "Desktop" of folder "BP" of folder "Users" of startup disk to 3
end tell

merci
0
tell application "Finder"
	activate
	
	set leContenuDuPressePapier to the clipboard as string
	
	set leCheminDAcces to (choose folder with prompt "Choisissez le dossier où vous souhaitez créer le dossier : " & leContenuDuPressePapier) as string
	
	set leNouveauDossier to make new folder at leCheminDAcces with properties {name:leContenuDuPressePapier}
	set label index of leNouveauDossier to 6
	open leNouveauDossier
end tell


Il n'y a plus qu'à modifié le numéro du label à utiliser ;-)
0
alfadr Messages postés 21 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 20 février 2008 212
24 nov. 2007 à 11:55
Celui-La me parrait excellent, juste un petit hic , une fois avoir cilquer sur ok un message d'erreur apparait : erreur dans finder IMpossible de crée la classe folder... que cela signifie t il???

tell application "Finder"
activate
set leContenuDuPressePapier to the clipboard as string

set leCheminDAcces to (choose folder with prompt "Choisissez le dossier où vous souhaitez créer le dossier : " & leContenuDuPressePapier) as string

set leNouveauDossier to make new folder at leCheminDAcces with properties {name:leContenuDuPressePapier}
open leNouveauDossier
end tell

mucho gracias
0
alfadr Messages postés 21 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 20 février 2008 212
3 déc. 2007 à 09:53
Après moults et moults recherche j'ai compris le porblème merci pour votre aide

alfadr
0
Je suis aussi confronté au problème de changer le nom d'un fichier avec un script.

select Finder window 1
select Finder window 1
set target of Finder window 1 to folder "documents pdf clients" of folder "Bases cosmAgora" of folder "14/cosmAtrade nouvelle version" of folder "15 Dossiers" of folder "Desktop" of folder "macmini" of folder "Users" of startup disk
select Finder window 1
select Finder window 1
set leContenuDuPressePapier to the clipboard as string
set name of document file "Sans titre.pdf" of folder "documents pdf clients" of folder "Bases cosmAgora" of folder "14/cosmAtrade nouvelle version" of folder "15 Dossiers" of folder "Desktop" of folder "macmini" of folder "Users" of startup disk to leContenuDuPressePapier
select Finder window 1
end tell

Le problème, c'est que l'expression "leContenuDuPressePapier" n'est pas reconnue ! Ce qui semble logique, puisque le language AppleScript est l'anglais !
Par quelle expression dois-je remplacer celle-ci pour qu'effectivement le dichier soit renommé avec le contenu du presse-papier ???

Merci d'avance...
0
Bonjour, alors premièrement, je vous conseille de lire quelques sites sur la programmation, car ce que vous appelez "l'expression leContenuDuPressePapier" est en fait une variable.

Une variable est un élément qui contient une valeur. Donc lorsque l'on fait appel au nom d'une variable en AppleScript, on fait en fait appel à sa valeur.

Dans votre script, la variable nommée : leContenuDuPressePapier aura pour valeur le contenu de votre presse papier (sous forme de texte).

Pourquoi est-ce-que cette variable aura cette valeur ? Tout simplement car vous dites dans votre script que le contenu de leContenuDuPressePapier est le presse papier :
set leContenuDuPressePapier to the clipboard as string




Autre chose, dans votre code, vous utilisez des commandes pour le Finder, mais vous ne dites pas au script que vous allez passer utiliser le Finder. Pensez à utiliser :
tell application "Finder"
	LE CODE POUR LE FINDER
end tell



Aussi, comme je disais plus haut dans cette page, vous avez utilisé la fonction d'enregistrement d'AppleScript, c'est bien, mais il faut tout de même savoir "faire le ménage" dans le code qu'il vous donne. Tous les "select Finder window 1" ne servent pas à grand chose. Aussi, à moins que vous souhaitiez voir le déroulement du script en direct, il ne sert pas à grand chose d'afficher la fenêtre dans laquelle l'action se déroule ;-)

Voici une version plus simple de votre script :
tell application "Finder"
	set leContenuDuPressePapier to the clipboard as string
	set name of file "Sans titre.pdf" of folder "documents pdf clients" of folder "Bases cosmAgora" of folder "14/cosmAtrade nouvelle version" of folder "15 Dossiers" of desktop to leContenuDuPressePapier
end tell


Alors quelques modifications :
1- Plus aucun select Finder window 1...
2- Plus de set target of Finder window 1...
3- Pas besoin de s'embêter à préciser que le fichier à modifier est un document, on utilise donc simplement file.
4- Accès plus direct au bureau en utilisant : "of desktop" au lieu de : "of folder "Desktop" of folder "macmini" of folder "Users" of startup disk".

Je trouve ça un peu plus simple comme ça.


Pour tout autres questions, n'hésitez pas.
0