Het Applescripts & OSA topic vs. het NOS handige scripts topic
Dit topic is verwant aan Het grote "handige scripts" topic in de Non-Windows sectie, maar omdat Applescripts daar een beetje een vreemde eend in de bijt zijn (en niet beschikbaar op andere Unix'en) wil ik deze een plek geven in AppleTalk.
Het zou in sommige gevallen een beetje door elkaar kunnen lopen (denk aan Applescripts als wrapper voor een shell script), in die gevallen zou een korte post met een link naar 'de andere kant' een idee kunnen zijn om (het grootste gedeelte van) het script op de juiste plek te hebben staan en toch makkelijk terug te kunnen vinden.
Wat kun je in dit topic kwijt:
OSA en osascript
OSA staat voor Open Scripting Architecture (OSA), zoals Apple het omschrijft is het een 'standard and extensible mechanism for interapplication communication in Mac OS X.' Het is de voortzetting van het idee waaruit onder het oude MacOS de AppleEvents technieken en Applescript zijn geboren. De heilige graal [sic] is het 'Open Scripting framework', een scripting API die uiteindelijk scripts minder afhankelijk zou moeten maken van de scriptingtaal. In feite zou je een script met een enkele menukeuze moeten kunnen switchen van een Applescript dialect naar bijvoorbeeld een Javascript dialect, zonder dat de werking verandert. Dat werd in 1993 beoogd door William R. Cook en Warren H. Harris:
De afkorting OSA vind je terug in osascript, een set shell commando's waarmee Applescript naar de command shell wordt gebracht. Misschien dat Apple de merkvrije naam 'osascript' erbij heeft gehaald om technieken te kunnen delen met andere bedrijven of vrij te geven, maar daar heb ik verder geen inzicht in.
Applescript, een zegen en een vloek
Applescript is geroemd, vanwege het doordachte interoperationele object model die een ongeëvenaard directe interface biedt om in actieve gebruikersapplicaties met objecten en opdrachten te kunnen spelen. Sommige ontwikkelaars (o.a. van Indesign, XPress, Microsoft Excel Mac, Filemaker Pro, TextWrangler) hebben Applescript ondersteuning door hun gehele applicatie verwerkt, of gecombineerd met een eigen scripting omgeving. Hierdoor wordt zo'n applicatie heel transparant, vanuit Applescript kun je de objecten in de geopende vensters benaderen en de functies die het programma biedt aanroepen, wat vooral een voordeel biedt in gevallen waar scripting wordt gecombineerd met niet te automatiseren taken. Zoals bij het produceren van een productencatalogus, dat kun je zo scripten dat de vormgever zich helemaal kan concentreren op de indeling. Productafbeeldingen, tekstblokken en tabellen worden door met een druk op de knop in de pagina geplaatst en kunnen door de scripting worden bijgewerkt als er in de database wat wijzigt.
Applescript is ook berucht, vanwege de interpreter die enerzijds veel vrijheden toelaat, maar anderzijds de power user flink dwars kan zitten doordat het geen redelijke alternatieven biedt voor constructies die in vrijwel alle andere programmeertalen gemeengoed zijn. Wat in de praktijk ook een groot probleem kan worden is dat in de verschillende applicaties de objecten anders worden behandeld, wat voor allerlei casting problemen kan zorgen als je objecten van de ene naar de andere applicatie overdraagt. Soms is de 'scriptability' in programma's maar deels doorgevoerd, of zijn de gekoppelde objecten en functies bij een update aangepast, en daardoor werken bepaalde events anders dan aangegeven, of helemaal niet. Over het algemeen werkt Applescript ook vrij traag, vooral omdat programma's na elke stap het beeld bijwerken, maar dat vinden veel gebruikers niet zo'n probleem omdat ze daardoor wel visuele controle hebben op het proces.
Tips:
Om je scripts te posten:
In dank gepikt van pinball het handige sjabloontje voor het presenteren van je geesteskinderen:
Dit topic is verwant aan Het grote "handige scripts" topic in de Non-Windows sectie, maar omdat Applescripts daar een beetje een vreemde eend in de bijt zijn (en niet beschikbaar op andere Unix'en) wil ik deze een plek geven in AppleTalk.
Het zou in sommige gevallen een beetje door elkaar kunnen lopen (denk aan Applescripts als wrapper voor een shell script), in die gevallen zou een korte post met een link naar 'de andere kant' een idee kunnen zijn om (het grootste gedeelte van) het script op de juiste plek te hebben staan en toch makkelijk terug te kunnen vinden.
Wat kun je in dit topic kwijt:
- Uiteraard je handige Applescripts;
- Aanvullingen en gebruikstips m.b.t. de geplaatste Applescripts of de Applescript taal;
- Algemene discussie over Applescript / osascript.
Anders dan bij het grote "handige scripts" topic wil ik hier meer ruimte voor discussie laten, dit omdat het werken met Applescript tot typische 'waarom?' vragen kan leiden. Voor de 'hoe?' vragen kun je beter zelf een topic openen, zodat het aandacht krijgt en efficiënter is terug te vinden.
OSA en osascript
OSA staat voor Open Scripting Architecture (OSA), zoals Apple het omschrijft is het een 'standard and extensible mechanism for interapplication communication in Mac OS X.' Het is de voortzetting van het idee waaruit onder het oude MacOS de AppleEvents technieken en Applescript zijn geboren. De heilige graal [sic] is het 'Open Scripting framework', een scripting API die uiteindelijk scripts minder afhankelijk zou moeten maken van de scriptingtaal. In feite zou je een script met een enkele menukeuze moeten kunnen switchen van een Applescript dialect naar bijvoorbeeld een Javascript dialect, zonder dat de werking verandert. Dat werd in 1993 beoogd door William R. Cook en Warren H. Harris:
Verder heeft Apple technieken in Applescript verwerkt om scripts 'op te nemen', dus de uit te voeren handelingen handmatig voor te doen, en daarmee het script aan te vullen. De Finder bijvoorbeeld biedt deze functionaliteit, het is leuk om snel vertrouwd te raken met Applescript of om te gebruiken voor kleine stukjes scripting, maar veel handiger dan dat is het niet.More than half of Apple’s market is international, and we felt that it was inappropriate to limit the script-writing populous to only the English-speaking. Dialects were introduced as a way to internationalize AppleScript. A dialect specifies the syntax of AppleScript. The examples in this paper are presented in the English dialect of AppleScript. Other dialects exist for Japanese and French, while others are under development. For example, here are translations of scripts into other dialects:
English:
the first character of every word whose style is bold
French:
le premier caractère de tous les mots dont style est gras
Professional:
{ words | style == bold}.character[1]
De afkorting OSA vind je terug in osascript, een set shell commando's waarmee Applescript naar de command shell wordt gebracht. Misschien dat Apple de merkvrije naam 'osascript' erbij heeft gehaald om technieken te kunnen delen met andere bedrijven of vrij te geven, maar daar heb ik verder geen inzicht in.
Applescript, een zegen en een vloek
Applescript is geroemd, vanwege het doordachte interoperationele object model die een ongeëvenaard directe interface biedt om in actieve gebruikersapplicaties met objecten en opdrachten te kunnen spelen. Sommige ontwikkelaars (o.a. van Indesign, XPress, Microsoft Excel Mac, Filemaker Pro, TextWrangler) hebben Applescript ondersteuning door hun gehele applicatie verwerkt, of gecombineerd met een eigen scripting omgeving. Hierdoor wordt zo'n applicatie heel transparant, vanuit Applescript kun je de objecten in de geopende vensters benaderen en de functies die het programma biedt aanroepen, wat vooral een voordeel biedt in gevallen waar scripting wordt gecombineerd met niet te automatiseren taken. Zoals bij het produceren van een productencatalogus, dat kun je zo scripten dat de vormgever zich helemaal kan concentreren op de indeling. Productafbeeldingen, tekstblokken en tabellen worden door met een druk op de knop in de pagina geplaatst en kunnen door de scripting worden bijgewerkt als er in de database wat wijzigt.
Applescript is ook berucht, vanwege de interpreter die enerzijds veel vrijheden toelaat, maar anderzijds de power user flink dwars kan zitten doordat het geen redelijke alternatieven biedt voor constructies die in vrijwel alle andere programmeertalen gemeengoed zijn. Wat in de praktijk ook een groot probleem kan worden is dat in de verschillende applicaties de objecten anders worden behandeld, wat voor allerlei casting problemen kan zorgen als je objecten van de ene naar de andere applicatie overdraagt. Soms is de 'scriptability' in programma's maar deels doorgevoerd, of zijn de gekoppelde objecten en functies bij een update aangepast, en daardoor werken bepaalde events anders dan aangegeven, of helemaal niet. Over het algemeen werkt Applescript ook vrij traag, vooral omdat programma's na elke stap het beeld bijwerken, maar dat vinden veel gebruikers niet zo'n probleem omdat ze daardoor wel visuele controle hebben op het proces.
Tips:
- Gebruik de woordenboek functie om alle methoden en objecten te vinden van een programma.
- In het woordenboek 'StandardAdditions.sdef' staan de algemene methoden en objecten.
- Je kunt OSAX Scripting Additions toevoegen voor extra functies,
maar let op de uitwisselbaarheid.
Om je scripts te posten:
In dank gepikt van pinball het handige sjabloontje voor het presenteren van je geesteskinderen:
[b]Naam: [/b]
[b]Doel: [/b]
[b]Werking: [/b]
[b]Vereiste additions: [/b]
[b]Configuratie: [/b]
[b]Parameters: [/b]
[b]Opmerkingen: [/b]
[code]
[/code]