[?]   dans   mode   trier par   

[<] 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

Apple, AppleScript, AppleScript Studio, AppleTalk, AppleWorks, ColorSync, Finder, HyperCard, iBook, iLife, iMac, iWork, Keynote, Mac, Macintosh, Mac OS, Pages, Panther, PowerBook, Power Mac, Power Macintosh, QuickTime, Safari, Tiger, Xcode sont des marques déposées par Apple Computer, Inc., enregistrées aux Etats-Unis et dans les autres pays. Liste officielle