[<] Sujet : [AS] Piloter un script via url
De : Dominique Isperian <anonyme@...>
Date : 2008-05-20 14:10:22
Sujet : Re: [AS] Piloter un script via url
De : Patrick Proniewski <anonyme@...>
Date : 2008-05-20 14:15:51
Sujet : Re: [AS] Piloter un script via url
De : Dominique Isperian <anonyme@...>
Date : 2008-05-20 14:23:51
Sujet : Re: [AS] Piloter un script via url
De : Daniel Varlet <anonyme@...>
Date : 2008-05-22 10:26:18
Sujet : Re: [AS] Piloter un script via url
De : Patrick Proniewski <anonyme@...>
Date : 2008-05-22 10:33:35
Sujet : Re: [AS] Piloter un script via url
De : Dominique Isperian <anonyme@...>
Date : 2008-05-22 19:39:17
Sujet : Re: [AS] Piloter un script via url
De : Dominique Isperian <anonyme@...>
Date : 2008-05-23 00:38:48
Sujet : Re: [AS] Piloter un script via url
De : Daniel Varlet <anonyme@...>
Date : 2008-05-23 08:15:23
Sujet : Re: [AS] Piloter un script via url
De : Dominique Isperian <anonyme@...>
Date : 2008-05-23 08:28:58
Sujet : Re: [AS] Piloter un script via url
De : MADERT Pascal <anonyme@...>
Date : 2008-05-23 08:29:41
Sujet : Re: [AS] Piloter un script via url
De : Dominique Isperian <anonyme@...>
Date : 2008-05-23 08:55:37
Avec plaisir : c'est tout simple. Pour le script de l'application
pilotée par l'url, je n'ai fait que d'adapter l'exemple fourni par
Madame Apple elle-même : (l'url se termine par : ?
IDRV=1234&DateRV=12/12/1912 )
Je charge deux globales à l'aide de ces données, puis déclenche un
script FM qui les utilise.
[SCRIPT]
on open location this_URL
-- EXTRACT ARGUMENTS
set x to the offset of "?" in this_URL
set the argument_string to text from (x + 1) to -1 of this_URL
set AppleScript's text item delimiters to "&"
set these_arguments to every text item of the argument_string
set AppleScript's text item delimiters to ""
-- PROCESS ACTIONS
tell application "FileMaker Pro Advanced"
tell database "cccalendar.fp7"
tell table "Appointments"
repeat with i from 1 to the count of these_arguments
set this_pair to item i of these_arguments
set AppleScript's text item delimiters to "="
copy every text item of this_pair to {this_key, this_value}
set AppleScript's text item delimiters to ""
if this_key is "IDRV" then
set cell "GlobaleClef" to this_value
else if this_key is "DateRV" then
set cell "GlobaleDate" to this_value
end if
end repeat
end tell
do script "iCal"
end tell
end tell
end open location
[/SCRIPT]
Le script de création de la tâche est également très simple : Dans la
base, j'ai créé une rubrique calcul qui compose l'url avec les
informations nécessaires (URL_Alarmes) que je déclare en début de
script, de même que la date et le libellé. Ensuite, je passe ces infos
dans iCal. (le son d'alarme "Bond" est une création personnelle, mais
n'est pas vraiment indispensable)
[SCRIPT]
tell application "FileMaker Pro Advanced"
tell database "cccalendar.fp7"
tell table "Appointments"
set URL_Alarmes to cell "URL_Alarmes"
set aa to cell "ApptHorodatageStart"
set Libelle to cell "ApptTitle"
end tell
end tell
end tell
set a to date aa
tell application "iCal"
-- Le calendrier existe-t-il ? Le créer au besoin
set TousCalendriers to the title of every calendar
if TousCalendriers contains "AlarmesFM" then
else
set NoCalendrier to (make calendar at end of calendars with
properties {title:"AlarmesFM"})
end if
tell calendar "AlarmesFM"
set x to make new todo at end of todos with properties {due date:a,
summary:Libelle, url:URL_Alarmes}
set y to make new sound alarm at end of sound alarms of x with
properties {trigger date:b, sound name:"Bond"}
end tell
end tell
[/SCRIPT]
Il y a sans doute encore quelques maladresses : je ne suis pas un pro
d'AS ;-) MAIS ça marche, et c'est l'essentiel.
--
Dominique
Le 23 mai 08 à 08:29, MADERT Pascal a écrit :
> Bonjour,
>
> Pouvez-vous mettre le script en ligne ?
> ceci m'intéresse, travaillant avec FMpro et iCal...
>
> merci
> Pascal
>
>
>
> Le 23 mai 2008 à 00:38, Dominique Isperian a écrit :
>
>> Grâce à vous, Daniel, j'ai pu résoudre mon "problème". Et puisque
>> vous n'en voyiez pas l'intérêt, je m'explique :
>>
>> Il s'agissait pour moi d'utiliser les alarmes de iCal plutôt que de
>> les programmer dans FileMaker ; en effet, quand l'alarme se déclenche
>> dans iCal, elle n'est pas intrusive dans la base de données ; si une
>> personne tape du texte, par exemple, la fenêtre qui apparaît dans
>> iCal
>> n'interrompt pas le travail effectué. Ce n'était pas le cas quand je
>> programmais l'alarme dans FileMaker. Quelle que soient les solutions
>> que j'avais imaginées, il y avait toujours une fenêtre à potentialité
>> intempestive qui apparaissait au-dessus de la fenêtre de travail.
>>
>> Peut-être existe-t-il une solution qui m'a échappé, mais celle que
>> j'ai pu, grâce à vous, mettre en oeuvre, fonctionne à merveille :
>> quand une alarme est requise, FM l'inscrit dans un calendrier ad hoc
>> de iCal, et y place l'url qui convient. Lors du déclenchement de
>> l'alarme, l'url permet de repasser les informations nécessaires à la
>> base qui présente la fiche nécessaire.
>>
>> Encore merci, et cordiales salutations.
>> --
>> Dominique
>>
>>
>>
>>
>> Le 22 mai 08 à 10:26, Daniel Varlet a écrit :
>>
>>>
>>> Le 20 mai 08 à 14:10, Dominique Isperian a écrit :
>>>
>>>> Bonjour à tous !
>>>>
>>>> Question : est-il possible de passer un paramètre à un script via
>>>> une
>>>> url ?
>>>>
>>>> iCal permet d'inscrire une url qui, entre autres, ouvre un fichier,
>>>> voire une application (file://localhost/Users/...)
>>>> Puis-je passer un ou des paramètres au script que je déclencherais
>>>> par
>>>> ce moyen ?
>>>>
>>>> Voilà voilà ... et merci pour vos réponses !
>>>> --
>>>> Dominique
>>>
>>>
>>> C'est tout à fait faisable de lancer un script avec en plus des
>>> paramètres par URL. D'ailleurs on peut lancer n'importe quoi par
>>> URL +
>>> arguments sous Mac OS X.
>>> Dans iCal je ne vois pas trop l'intérêt, j'ai dû louper quelque
>>> chose,
>>> mais peu importe.
>>> Ceci est faisable avec un type (protocole) d'URL quelconque.
>>> (J’éviterais de surcharger (d'utiliser) les plus connus http, file,
>>> mailto, etc..., mais je n'ai pas essayé). C''est valable pour tout
>>> type d'application dans Mac OS X, pas seulement les applets.
>>>
>>> Pour les applets, ça tombe bien, c'est décrit en détail à :
>>>
>>> <http://www.apple.com/applescript/linktrigger/index.html>
>>>
>>> Avec en prime une implémentation de serveur de scripts
>>> (optionnelle).
>>>
>>> En résumé:
>>>
>>> 1) Modifier le fichier Info.plist de l'applet, pour signaler au
>>> système (LaunchServices je présume) le(s) type(s) d'URL géré/
>>> accepté(s) par l'application.
>>>
>>> 2) Dans le code utiliser le handler (gestionnaire) AS qui va
>>> récupérer
>>> l'URL:
>>>
>>> on open location theURL
>>> -- parsage de l'URL et lancement des actions.
>>> end open location
>>>
>>> 3) C'est tout.
>>>
>>> Je viens d'essayer ceci (exemple de protocole fabriqué pour
>>> l'occasion)
>>> <x-toto://net.totor.testURL?action=1&action=2>
>>> Testé avec open (Terminal), iCal, et ici dans Mail: ça marche sans
>>> problème. J'ai bien un dialogue avec 1 et 2.
>>>
>>> Extrait du fichier Info.plist:
>>>
>>> ...
>>> <key>CFBundleIdentifier</key>
>>> <string>net.totor.testURL</string>
>>> ...
>>> <key>CFBundleURLTypes</key>
>>> <array>
>>> <dict>
>>> <key>CFBundleURLName</key>
>>> <string>x-toto URL</string>
>>> <key>CFBundleURLSchemes</key>
>>> <array>
>>> <string>x-toto</string>
>>> </array>
>>> </dict>
>>> </array>
>>> ...
>>>
>>> Le code AS:
>>>
>>> [SCRIPT]
>>> on open location u
>>> set zs to last item of tinkerText(u, "?")
>>> set zs to tinkerText(zs, "&")
>>> repeat with z in zs
>>> set {k, v} to tinkerText(z, "=")
>>> if k = "action" then
>>> doIt(v)
>>> end if
>>> end repeat
>>> end open location
>>>
>>> on doIt(z)
>>> activate
>>> display dialog z
>>> end doIt
>>>
>>> --mark (-
>>> --mark Text tools<I<U!+
>>> --=============================== Text tools
>>> ================================--
>>> (* v1.2.2 *)
>>> on tinkerText(z, d) (* bascule text <-> list *)
>>> try
>>> set _d to AppleScript's text item delimiters
>>> set AppleScript's text item delimiters to d
>>> considering case
>>> if class of z is list then
>>> set r to z as text
>>> else
>>> set r to text items of z
>>> end if
>>> end considering
>>> set AppleScript's text item delimiters to _d
>>> return r
>>> on error ert number ern from obj
>>> set AppleScript's text item delimiters to _d
>>> -- stampError(ert, ern, obj, "tinkerText()")
>>> error ert number ern
>>> end try
>>> end tinkerText
>>> --=============================== /Text tools
>>> ===============================--
>>> [/SCRIPT]
>>>
>>>
>>> Un petit truc: le Finder et Cie sont des feignasses, et parfois il
>>> faut bouger l'applet d'un dossier à un autre (par exemple) pour
>>> qu'ils
>>> prennent en considération les changements d’Info.plist.
>>>
>>> Ton autre question: Pour récupérer une sélection (n'importe
>>> laquelle)
>>> dans iCal, je ne vois pas non plus. Même par UI scripting, niet...
>>>
>>> A+
>>>
>>> --
>>> Daniel
>>>
>>> _______________________________________________
>>> Applescript_fr mailing list
>>> anonyme@...
>>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>
>> _______________________________________________
>> Applescript_fr mailing list
>> anonyme@...
>> http://listes.patpro.net/mailman/listinfo/applescript_fr
>>
>
> _______________________________________________
> Applescript_fr mailing list
> anonyme@...
> http://listes.patpro.net/mailman/listinfo/applescript_fr
_______________________________________________
Applescript_fr mailing list
anonyme@...
http://listes.patpro.net/mailman/listinfo/applescript_fr
Sujet : Re: [AS] Piloter un script via url
De : MADERT Pascal <anonyme@...>
Date : 2008-05-23 12:23:01