Commande sans effet

iCed

Membre actif
28 Juillet 2003
277
21
Paris
Bonjour les développeurs, voilà je vous expose mon souci. Ayant un peu de temps, j'ai décidé de "créer" (plutôt de plagier) quelques scripts. En l'occurrence, un script qui permettrai de créer un rendez-vous dans iCal à partir du Carnet d'adresse.


Je vous joint les lignes que j'ai plagiées et arrangées à ma convenance :


using terms from application "Address Book"
on action property
return "phone"
end action property

on action title for this_person with this_entry
set this_name to (first name of this_person) & " " & (last name of this_person)
return "Créer un événement 2avec " & this_name
end action title

on should enable action for this_person with this_entry
return true
end should enable action

on perform action for this_person with this_entry
set this_name to (first name of this_person) & " " & (last name of this_person)
set this_ID to the id of this_person
set these_labels to the label of phone of this_person
set these_numbers to the value of phone of this_person
set this_location to the *ici il y a un probleme* of this_person
set the phone_data to ""
repeat with i from 1 to the count of these_numbers
if the phone_data is "" then
set the phone_data to phone_data & item i of these_labels & space & item i of these_numbers
else
set the phone_data to phone_data & return & item i of these_labels & space & item i of these_numbers
end if
end repeat
my create_event(this_ID, this_name, this_location, phone_data)
end perform action
end using terms from

on create_event(this_ID, this_name, this_location, phone_data)
try
set this_URL to ("addressbook://" & this_ID)
tell application "iCal"
activate
set this_calendar to (the first calendar whose title is "Personnel")
tell this_calendar
set this_event to make new event at end of events with properties {summary: ("Rdv avec " & this_name), location:this_location, url:this_URL}
set description of this_event to the phone_data
show this_event
end tell
end tell
on error error_message
tell application "iCal"
activate
display dialog error_message buttons {"Cancel"} default button 1
end tell
end try
end create_event



J'ai mis en orange la partie qui me pose problème et en vert les zones qui peuvent aider à la lecture.

En remplaçant la zone orange par "first name", il n'y a pas de probleme, seulement je souhaiterai que dans la case "lieu" de l'événement iCal affiche non pas le prénom mais l'adresse du contact. J'ai par conséquent essayé de remplacer cette zone orange par "adresses", "city", "street" mais rien ne s'affiche alors.



Désolé si je ne suis pas très clair, n'hésitez pas à me demandez ce que vous ne comprenez pas, en revanche je ne connais pas encore le vocabulaire spécifique (ex : commande, variable...).

Merci d'avance ! :)
 
Snif, pas de réponses :( bon, dans le doute que ce soit par flemme de lire tout mon post, je simplifie ma question en quelques lignes, j'aimerai savoir comment faire afficher l'adresse du contact dans la zone "lieu" de l'événement iCal.

Vous pouvez tester le script en supprimant la ligne, il fonctionne.

Merci d'avance.
:zen:
---iCed---
 
iCed a dit:
Snif, pas de réponses :( bon, dans le doute que ce soit par flemme de lire tout mon post, je simplifie ma question en quelques lignes, j'aimerai savoir comment faire afficher l'adresse du contact dans la zone "lieu" de l'événement iCal.

Vous pouvez tester le script en supprimant la ligne, il fonctionne.

Merci d'avance.
:zen:
---iCed---

non de non certains lisent
mais c'est difficile de mettre ton code en prod
on peut tester quelque chose et essayer d'ouvrir le dico apple applescript
mais comme je peux pas valider ton script pour le tester et voir ce que propose
le dico ........................

je suis pas assez callé en AppleScript pour répondre de visu
mais essayer de chercher la réponse oui

:zen: :zen:
 
iCed a dit:
En remplaçant la zone orange par "first name", il n'y a pas de probleme, seulement je souhaiterai que dans la case "lieu" de l'événement iCal affiche non pas le prénom mais l'adresse du contact. J'ai par conséquent essayé de remplacer cette zone orange par "adresses", "city", "street" mais rien ne s'affiche alors.

Merci d'avance ! :)

Bonjour

Dans les scripts on utilise les noms en Anglais.
Tu a essayé d'écrire Adresse par 'Address' avec 2d (c'est la traduction avec Google)

set this_location to the value of address of this_person

Pas testé par moi.

Fait un test

@+
 
Je suis désolé, je pensais que ça marchait en enlevant la ligne. Si tu veux, pour tester j'ai une version qui fonctionne (pas exactement comme je le souhaite), elle crée un nouvel événement rempli les champs souhaités correctement et rempli le champ "lieu" de l'événement iCal avec le prénom de ton contact.
Je te joint le script dans ce message.


Script à placer ici :
Disque Dur / bibliotheque / Adress Book Plug-Ins

ensuite pour l'utiliser, il faut ouvrir le carnet d'adresse puis cliquer sur le numéro de téléphone d'un contact.

Ps : le script est prévu pour fonctionner si iCal possède un Calendrier appeler "Personnel"
 
Merci quand même, oui il s'agit d'une faute de frappe, désolé, j'ai tapé "address" en anglais dans le script, j'ai également essayé "addresses"... rien n'y fait, "id" en revanche ca fonctionne cela ne correspond pas au résultat que j'attends.

Merci à tous.
 
Je te joint le script dans ce message.


Bonsoir

Ta pièce jointe c'est une micro-image de ce qui est affiché comme pièce jointe.

@+
 
Hein ? keskil a mon fichier joint ??? tu le telecharges tu rajoutes .zip et ca s'ouvre, je vi1 d'essayer.

Je sens que ma carrière d'un jour dans l'apple script va s'arrêter ici
 
iCed a dit:
Hein ? keskil a mon fichier joint ??? tu le telecharges tu rajoutes .zip et ca s'ouvre, je vi1 d'essayer.

Je sens que ma carrière d'un jour dans l'apple script va s'arrêter ici

Bonjour

J'avais jamais recu ce type de fichier.
Tu commence fort, si c'est tes débuts en AppleScript.

Si je comprend bien ton script.

Ecriture dans la variable des noms (labels) attribués a tes N° de Tel.
set these_labels to the label of phone of this_person

Ecriture dans la variable des N° de Tel.
set these_numbers to the value of phone of this_person

Boucle pour attribuer à chaque label son N° de Tel.
set the phone_data to ""
repeat with i from 1 to the count of these_numbers
etc...
Marche, il n'y a qu'une entrée par label.

Les adresses ont pour chaque label plusieurs entrées.

Ecriture dans la variable des noms (labels) attribués aux adresses.
set these_labels to the label of Address of this_person

Il faut lire les Street , les séparer (si plusieurs adresses) par une boucle (comme ci-dessus).
Puis faire la même chose avec les suivants pour compléter l'adresse

City, Country, ContryCode, State, Zip

Chaque passage dans la boucle doit remplir une variable par adresses pour avoir les adresses en un seul bloc chacune.

Pour écrire dans le carnet d'adresses, ils utilisent ce genre de ligne.
make new address at beginning of addresses with properties {label:theCategory, city:theData}

La c'est pour le nom de la ville, mais une routine pour chaque entrées de l'adresse.

J'ai pas encore trouvé la solution, je pense que la c'est un conseil d'un programmeur en AppleScript qu'il nous faut.
Je fais de l'AppleScript en amateur (je suis pas souvent sur le web, c'est pour ca que mes réponses sont tardives).

@+
 
iCed a dit:
Je sens que ma carrière d'un jour dans l'apple script va s'arrêter ici

Bonsoir

Si ta carrière s'arrète alors dit moi si cela te convient.

using terms from application "Address Book"
on action property
return "phone"
end action property

on action title for this_person with this_entry
set this_name to (first name of this_person) & " " & (last name of this_person)
return "Créer un événement 2avec " & this_name
end action title

on should enable action for this_person with this_entry
return true
end should enable action

on perform action for this_person with this_entry
set this_name to (first name of this_person) & " " & (last name of this_person)
set this_ID to the id of this_person
set these_labels to the label of phone of this_person
set these_numbers to the value of phone of this_person

-- Mes modifications
-- La lecture se fait sur toutes les adresses

-- Utilisé comme compteur de la boucle repeat
set this_numloc to the label of address of this_person --Bon
-- Les Noms des rues des adresses si plusieurs adresses
set this_Rue to street of the address of this_person -- Bon
-- Les noms des villes des adresses
set this_Ville to city of the address of this_person -- Bon
-- Les codes posteaux des villes
set this_CP to zip of the address of this_person --Bon
-- Variable de controle pour changement d'adresse
set Ctrl to 0
-- Boucle de lecture des adresses pour les séparer
repeat with i from 1 to the count of these_numbers
set Ctrl to Ctrl + 1 -- Sélection de l'adresse lue
set Adresses_data to "" -- RAZ de la variable
set Adresse_data to item i of this_Rue & return -- Ecriture du nom de la rue
set Adresse_data to Adresse_data & item i of this_CP & " " & item i of this_Ville -- Ecriture du CP et de la ville
if Ctrl is 1 then set Adresse1 to Adresse_data -- Première adresse
if Ctrl is 2 then set Adresse2 to Adresse_data -- Deuxième adresse
-- si plus de 2 adresses en ajouter
end repeat
set this_location to Adresse1 -- Adresse à afficher a votre choix
-- Je n'affiche qu'une adresse, la principale.

-- Fin des modifications

set the phone_data to ""
repeat with i from 1 to the count of these_numbers
if the phone_data is "" then
set the phone_data to phone_data & item i of these_labels & space & item i of these_numbers
else
set the phone_data to phone_data & return & item i of these_labels & space & item i of these_numbers
end if
end repeat
my create_event(this_ID, this_name, this_location, phone_data)
end perform action
end using terms from

on create_event(this_ID, this_name, this_location, phone_data)
try
set this_URL to ("addressbook://" & this_ID)
tell application "iCal"
activate
set this_calendar to (the first calendar whose title is "Personnel")
tell this_calendar
set this_event to make new event at end of events with properties {summary:("Rdv avec " & this_name), location:this_location, url:this_URL}
set description of this_event to the phone_data
show this_event
end tell
end tell
on error error_message
tell application "iCal"
activate
display dialog error_message buttons {"Cancel"} default button 1
end tell
end try
end create_event

Je n'ai placé que 3 items (rue, CP et ville) on peut en rajouter.
Je n'affiche qu'une adresse la principale, a modifier si tu en veut plusieurs

Je n'utilise pas iCal et le carnet d'adresses c'est juste pour le contrôle des spasm avec Safari.
Tu peut modifier à ta guise, tu as une idée.

Ca marche très bien chez moi sur PoowerBook G4 17" Panther 10.3.4

@+
 
  • J’aime
Réactions: iCed