AppleScript è un linguaggio che consente di creare procedure automatizzate nei computer Apple Macintosh. È utile quando si devono eseguire ripetutamente operazioni costituite da diverse fasi o anche quando occorre utilizzare due o più applicazioni Macintosh contemporaneamente.
Questo documento si riferisce principalmente all'uso di AppleScript, ma le informazioni in esso contenute sono valide anche per la creazione di script per Outlook Express con Frontier, Perl e QuicKeys o mediante l'invio diretto di AppleEvents. Questo testo costituisce un'integrazione del documento Microsoft Outlook Express 5.0 AppleScript Reference.
Questo documento presuppone una certa familiarità da parte dell'utente con AppleScript e con Macintosh Script Editor per la consultazione dei dizionari di script e per la creazione di script di debug. Se non si conosce affatto AppleScript, è consigliabile prendere visione di almeno uno dei seguenti documenti (in lingua inglese):
Il documento Microsoft Outlook Express 5.0 AppleScript Reference contiene informazioni sulle classi e i comandi contenuti in Outlook Express e rappresenta una versione in forma semplificata dei dati contenuti nel dizionario AppleScript di Outlook Express; comprende tutte le parole AppleScript, esempi di codice e spiegazioni per i comandi di non immediata comprensione. Qualora tuttavia si riscontrassero delle divergenze fra questo documento e il dizionario, fa fede quest'ultimo.
Informazioni sullo scripting di Outlook Express sono reperibili anche nei seguenti newsgroup Usenet, ai quali partecipano molti utenti e creatori di script di Outlook Express:
Altra risorsa fondamentale per lo scripting di Outlook Express è la pagina The Unofficial Outlook Express Page. Qui è possibile entrare a far parte di una lista di distribuzione, mediante la quale gli utenti dell'applicazione si scambiano informazioni. Diversi membri della lista sono sviluppatori Outlook Express. La pagina è raggiungibile dal sito ufficiale di Microsoft Outlook Express per Macintosh.
Outlook Express 5.0 utilizza l'interfaccia di script Apple Object Model e l'interfaccia Apple Mail Suite per la posta. Outlook Express 5.0 è fornito di scripting per i messaggi locali, gli account POP e IMAP, i newsgroup Usenet e una Rubrica.
In aggiunta alle applicazioni standard AppleScript, Microsoft Outlook Express è dotato di diverse applicazioni proprie: Outlook Express Mail and News, Outlook Express Contact e URL. L'insieme di queste applicazioni contiene tutte le classi e i comandi di script necessari ad automatizzare tutte le procedure di Outlook Express.
È possibile visualizzare classi, comandi e proprietà utilizzati in Outlook mediante l'applicazione AppleScript Script Editor fornita con il Macintosh. Selezionare Apri Dizionario... dal menu Archivio e scegliere Outlook Express. Il testo risultante è chiamato dizionario AppleScript di Outlook Express.
Per ulteriori informazioni sui comandi AppleScript presenti nel dizionario di Outlook Express, consultare il documento Outlook Express AppleScript Reference.
In linea con le indicazioni di Apple, si è cercato di limitare il numero di verbi nel dizionario AppleScript di Outlook Express e di impiegare il più possibile quelli standard.
Il menu Script sulla barra di Outlook Express 5.0 è rappresentato dall'icona del programma. Dopo aver creato gli script e averne effettuato il debug, è possibile aggiungerli al menu Script registrandoli come script compilati e trascinandoli nella cartella Voci del menu Script nella cartella principale del programma. Il menu Script è aggiornato ogni volta che vengono aggiunti elementi alla cartella (ma non se una voce di menu è solo rinominata). Gli oggetti della cartella Voci del menu Script possono essere archivi di tipo ‘osas' contenenti script OSA di qualunque tipo, inclusi script Frontier e QuicKeys. Tenendo premuto il tasto Opzione quando si apre uno script del menu Script, l'archivio viene aperto dall'applicazione Script Editor e può essere modificato.
È anche possibile creare sottocartelle all'interno della cartella Voci del menu Script; gli elementi contenuti nelle sottocartelle costituiranno voci di sottomenu del menu Script. Vi è tuttavia un limite di 14 per questi sottomenu, e la presenza di un numero maggiore causerà un messaggio di errore.
Per eseguire uno script che è stato aggiunto al menu Script è sufficiente selezionarlo; è possibile definire i comandi da tastiera mediante una barra ('/') seguita da modificatori. I modificatori sono 's' per il tasto Maiusc, 'o' per Opzione, 'm' per Comando o 'c' per Control. Se non si specifica alcun modificatore, Comando è quello predefinito. Ad esempio, “/cF” equivale a Control+F, “/F” equivale a Comando+F, “/msF” equivale a Comando+Maiusc+F. Outlook Express non controlla l'eventuale presenza di conflitti, e i risultati di tali conflitti sono imprevedibili.
Dopo l'esecuzione di uno script, se necessario questo viene registrato su disco. Ad esempio, se una delle proprietà dello script viene modificata dall'esecuzione, lo script viene registrato per aggiornare il valore della proprietà:
property timesRun : 0
set timesRun to timesRun + 1
display dialog "Lo script è stato eseguito " & timesRun & " volte."
Durante l'esecuzione di uno script, Outlook Express 5.0 consente di passare ad altre applicazioni, risponde agli eventi di aggiornamento e continua ad eseguire i thread. Non risponderà tuttavia ai comandi da tastiera: questi potrebbero infatti essere utilizzati per aprire dialoghi modali e ciò potrebbe causare problemi.
Apple ha introdotto il supporto Unicode in AppleScript per Mac OS 8.5. Unicode è uno standard Internet per la visualizzazione del testo in diversi alfabeti, oltre a quello latino, come il cirillico e il Kanji giapponese. Unicode facilita inoltre la visualizzazione dei caratteri estesi dell'alfabeto latino.
Molte proprietà di Outlook Express definite come stringhe sono anche accessibili come testo Unicode. Come impostazione predefinita, tali stringhe sono restituite come testo normale, ma è possibile ottenere la versione Unicode aggiungendo il comando "as unicode text", o anche impostare la proprietà della stringa come testo Unicode, come nell'esempio seguente:
set MyUnicodeHeaders to the headers of MyMessage as unicode text
Tenere sempre aperte sia la finestra dei risultati di Script Editor, sia quella del record degli eventi quando si crea e si esegue il debug di un nuovo script: potrebbero contenere informazioni importanti.
Se si desidera conoscere la classe dell'elemento selezionato nella finestra attiva di Outlook Express, impostare una variabile come uguale a la selezione e ottenere la classe della variabile. Non richiedere la classe della selezione, perchè questa è "property."
È consigliabile suddividere espressioni complesse in parti più piccole da includere in una variabile. Ad esempio, il comando:
set V to the W of the X of the Y of the Z
può essere suddiviso così:
set V1 to the Y of the Z
set V2 to the X of the V1
set V to the W of the V2
Ciò facilita notevolmente il debug dello script. Si noti tuttavia che il secondo script può essere leggermente più lento perché deve inviare tre AppleEvents a Outlook Express invece di uno.
Inoltre è bene rendere esplicito l'ordine di valutazione delle espressioni desiderato tramite l'impiego di parentesi.
Il seguente modello di AppleScript può essere utilizzato per elaborare messaggi selezionati dall'utente. Copiare questo modello in Script Editor e sostituire la riga di commento "[Inserire il codice qui]" con il codice AppleScript da applicare al messaggio. Quando lo script viene eseguito, il codice sarà applicato a tutti i messaggi correnti.
Controllare nel documento "Reference" la proprietà current messages per verificare che cosa si intende per "messaggio corrente." Per un esempio di semplice applicazione di questo modello, vedere gli script della cartella "Colore" del menu Script.
-- figure out which messages to process
on run
tell application "Outlook Express"
set theMessages to the current messages
repeat with theMsg in theMessages
my ProcessMsg (theMsg)
end repeat
end tell
end run
-- process the messages
on ProcessMsg (theMsg)
-- [Inserire il codice qui]
end ProcessMsg