Entourage X: Get properties från object (draft window eller message)?

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2003-07-29 17:52

Sitter och pular lite med AS i Entourage och har problem med att få tag på properties av olika objekt. Tex så funkar inte detta:

get properties of window

Får felet "can't get properties of window" trots att jag har ett meddelande öppet. Spelar ingen roll om jag försöker med draft window eller message

(försökte även lägga in lite frontmost, current etc innan window men det tillåter inte syntaxen.

Syftet är dels att föröska skriva ett skript som ändrar POP-konto i ett meddelande efter att man öppnat det samt att kunna jobba vidare lite med attachment i inkommande post. Har lite problem att förstå hur man kommer åt existerande properties (skapa nya har ju Ola lärt oss)

Citat:

Skrevs ursprungligen av mattan
Sitter och pular lite med AS i Entourage och har problem med att få tag på properties av olika objekt. Tex så funkar inte detta:

get properties of window

Får felet "can't get properties of window" trots att jag har ett meddelande öppet. Spelar ingen roll om jag försöker med draft window eller message

Det verkar som om det är en bugg, att du inte kan komma åt flera properties samtidigt. Däremot går det bra att komma åt dem en och en. T.ex så här:

tell application "Microsoft Entourage"
display dialog "ditt första fönster heter " & (name of window 1)
end tell

Här är en tråd om hur man skapar ett Applescript som skapar ett nytt meddelande i Entourage till en viss person med ett visst innehåll:

http://www.99mac.com/forum/showthread.php?s=&threadid=25805

I det står det lite nyttiga grejer.

Troligen är felet att du inte kan be om alla "properties" på en gång, det stöds sannolikt inte.

Detta fungerar alltså inte:

get properties of window 1

Men du kan få fram en "property" i taget, så detta fungerar:

get the name of window 1

("window 1" anger ordlistan är en referens till fönstret som är längst fram)

För att få fram något värdefullt så behöver vi granska ordlistan på nytt och se vilka properties vi kan läsa av. Då de flesta objekt ärver egenskaper av varandra så letar vi normalt i ordlistan efter en anteckning om "inheritance" vilket anger vilket överliggande objekt detta objekt ärver egenskaper (properties) från.

För objekttyperna "incoming message" och "outgoing message" så är "inheritance" densamma, objekttypen "message".

För "window" står det inget om att det ärver egenskaper från någon annan typ av objekt, en anteckning om inheritance saknas alltså. Men det står att man kan få fram en referens till det meddelandet (message , en annan objekttyp än window, som i sin tur har en massa properties) som visas i fönstret ifråga så detta borde se ut så här:

get the displayed message of window 1

Det returnerar:

incoming message id 60690 of application "Microsoft Entourage"

Som synes borde jag nu kunna komma åt alla properties för objekt-typen message, varav en är "account" (som returnerar en referens till ett konto). Detta:

get account of incoming message id 60690

returnerar detta:

POP account id 7 of application "Microsoft Entourage"

Denna referens kan jag sedan använda för att få fram namnet på kontot, som är en "property" för objekttypen "POP Account" enligt:

get name of POP account id 7

detta returnerar:

"Intelligent Mammals.se"

Resulterande script
Så ett script som returnerar konto-namnet för fönstret längst fram enligt diskussionen ovan skulle kunna vara:

tell application "Microsoft Entourage"
-- Plocka fram en referens till meddelandet, spara i messageref
set messageref to displayed message of window 1
-- Plocka fram en referens till kontot, spara i accountref
set accountref to account of messageref
-- Läs av namnet på kontot med accountref
get name of accountref
end tell

Men eftersom Applescript är heriarkiskt uppbyggt och olika objekt ärver egenskaper av varandra så kan jag "mata" en parameter som kräver en referens med en annan som returnerar en referens och bilda "kedjor" eller heriarkier, så detta fungerar precis lika bra:

Korta kärnfulla versionen

tell application "Microsoft Entourage"
get name of account of displayed message of window 1
end tell

Lycka till!

/Ola

  • Medlem
  • International user
  • 2003-07-29 18:56
Citat:

Skrevs ursprungligen av Richard Rönnbäck
Det verkar som om det är en bugg, att du inte kan komma åt flera properties samtidigt. Däremot går det bra att komma åt dem en och en. T.ex så här:

tell application "Microsoft Entourage"
display dialog "ditt första fönster heter " & (name of window 1)
end tell

Hmm, verkar vara lite mer komplicerat..

'get name of window 1' funkar men

'get name of draft window 1' funkar inte

inte heller

'get (name of attachment) of draft window/window' eller ' get POP Account'

'get subject of window' funkar dock

Verkar som det skiljer sig hur man skall skriva mellan olika properties/objekt...

Tillägg: Såg Ola's svar i efterhand...

Så här får du fram namnet på första bilagan till ett meddelande:

tell application "Microsoft Entourage"
get name of attachment 1 of displayed message of window 1
end tell

Ovanstående returnerar en referens till en bilaga som du sedan kan använda i andra script-steg, som tex att spara bilagan någonstans på hårddisken.

attachment 1 of incoming message id 60199 of application "Microsoft Entourage"

Så här får du fram en lista med alla bilagor till meddelandet i fönstret längst fram:

tell application "Microsoft Entourage"
get attachments of displayed message of window 1
end tell

Du får fram följande:

{attachment 1 of incoming message id 60199 of application "Microsoft Entourage"}

Måsvingarna visar att datatypen är en lista, med endast en "medlem".

Du kan förstås spara undan din lista med bilagor i en variabel och sedan repetera dig igenom dem och spara varje bilaga på skrivbordet med:

tell application "Microsoft Entourage"
set listofattachments to attachments of displayed message of window 1
repeat with oneattachment in listofattachments
-- Gör saker med varje bilaga här:
save oneattachment in ("Macintosh HD:Users:ola:Desktop:" & name of oneattachment as string) as file type of oneattachment
end repeat
end tell

Lycka till!

/Ola

En eloge till Ola för den pedagogiska framställningen av en bra metodik för att jobba med Apple Script

*applåderar*

1
Bevaka tråden