Hur använder jag "tjänster" med Applescript?

Tråden skapades och har fått 14 svar. Det senaste inlägget skrevs .
1

Jag kan ingenting om Applescript till att börja med. Jag har köpt Daylite för att förvalta kontakter, projekt mm (se här: CRM för OS X).
Då det inte finns någon mailfunktion inbyggd i Daylite kan man använda Mail. För att förvalta ingående mail kan man dock bara kopiera mailet och bifoga det som en textfil i Daylite. Detta görs över "services".

Jag vill dock automatisera detta för att spara tid. Vad jag behöver är ett Applescript som:

1. triggas av en regel som flyttar mailet till en mapp "Jobbet"
2. väljer det nya mailet i mappen
3. Frågar om jag vill länka mailet till Daylite
4. visar följande headers: From, Subject, Date To, CC och Attachments i mailet
5. markerar och kopierar headers och brödtexten
6. döljer headers:arna efteråt
7. startar tjänsten "Daylite/Make & Attach Note from Apple Mail Text".

Kan man länka till ett mail från en annan applikation via något mail-id också? Så att man får en referens "tillbaks" från Daylite till Mail?

Här lite grov kod:

tell application "Mail" to activate 
	select "row 24" of "outline 1" of "scroll area 1" of "drawer 1"  of window "In" -- Detta är brevlådan som ska väljas i fönstret med brevlådor

         click menu item "Preferences…"  of menu "Mail"  of menu bar item "Mail"  of menu bar 1 -- Öppnar preferences fönstret

         click button "Viewing"  of tool bar 1 of window "General" -- Väljer fliken för viewing

         select "Custom" of pop up button 1 of group 1 of group 1 of window "Viewing" -- Väljer dropdownmenyn för att väla custom
         close Window "Viewing"  -- stänger preferences fönstret

	select all in "scroll area 2" of
		"split group 1" of "group 1" of window "In" (1) of 
	application "Mail" -- Väljer headers och brödtext i Mail
	
	copy selection
					
         click menu item "Make & Attach Note from Apple Mail Text"  of menu "DayLite"  of menu item "DayLite"  of menu "Services"  of menu item "Services"  of menu "DayLite"  of menu bar item "DayLite"  of menu bar 1 -- Anropar tjänsten som Daylite publicerat i programmenyn under tjänster

end tell

Naturligtvis funkar inte det här. Jag har ju inte en aning om hur koden ska se ut. Har liksom bara skrivit av kodsnuttar från andra script. men kan någon tala om för mig HUR det ska se ut?

Senast redigerat 2004-06-07 14:23

Har kommit en bit på väg nu men funkar inte helt ännu:

tell application "Mail"
	activate
end tell

tell application "System Events"
	tell process "Mail"
		click menu item "Preferences…" of menu "Mail" of menu bar item "Mail" of menu bar 1
		click button "Viewing" of tool bar 1 of window "General"
		get value of pop up button 1 of group 1 of group 1 of window "Viewing"
		if the value of pop up button 1 is "None" then
			set this_item to "Default"
		else
			set this_item to "none"
		end if
		click button "General" of tool bar 1 of window "Viewing"
		click button 1 of window "General"
		select all in scroll area 2 of splitter group 1 of group 1 of window "Siloking — On My Mac"
		
		click menu item "Make & Attach Note from Apple Mail Text" of menu "DayLite" of menu item "DayLite" of menu "Services" of menu item "Services" of menu "DayLite" of menu bar item "DayLite" of menu bar 1
				
	end tell
end tell

Hur kan jag sätta ett värde i en dropdown mha applescript? Det är där jag kör fast...

Marcus, det är möjligt att du går över ån efter vatten. Det sättet som du gör AppleScript på i ditt exempel, att simulera menyval och musklickningar, är en slags sista utväg om programmen inte stödjer "riktig" AppleScript.

Jag har aldrig använt Daylite och tänker för stunden inte installera några nya program för att testa men om du väljer att öppna ordlista i Manusredigerare/Script Editor, och letar reda på Daylite-programmet, får du då upp någon ordlista?

I så fall finns det sannolikt enklare, snabbare och effektivare sätt att göra det du vill, än att använda GUI scripting

Rickard,
jag kan tyvärr inte välja Daylite när jag försöker öppna en ordlista, så jag förmodar att det inte har stöd för AS. Men å andra sidan vill jag ju egentligen scripta Mail.app, Daylite har ju redan en tjänst som jag kan anropa. Att använda GUI scripting i det enstaka fallet är inte så farligt.

Det är ju fr.a. visandet och gömmandet av headers i Mail som jag vill åt.

Jag har hittat nyckeln 'HeaderDetail' i com.apple.mail.plist. Kan man trigga den istället?

  • Medlem
  • 2004-06-08 18:15
Ursprungligen av Marcus Holmer:

Jag har hittat nyckeln 'HeaderDetail' i com.apple.mail.plist. Kan man trigga den istället?

Håller med Rickard - du verkar göra det lite onödigt svårt för dej. Testa detta istället:

tell application "Mail"
   set header detail to all  
  --eller custom om du hellre vill ha det
end tell

Kolla åxå in Mails ordlista. Eftersom du verkar vilja scripta Mail i första hand och inte Daylite är det betydligt enklare att använda Mails AS-kommandon och klasser än att använda System Event.

Är oxå intresserad av applescript... finns det några vettiga böcker på detta område?

Vet att det finns en massa hemsidor, men jag vill ha en bok

  • Medlem
  • 2004-06-08 22:15

Jag kan varmt rekommendera AppleScript The Definitive Guide från O'Reilly. Införskaffade denna för ett par veckor sedan och har kommit bra mycket längre i mitt scriptande än vad jag gjort tidigare.

Mvh
/Ulf

Hur väljer jag en bestämd mailbox, markerar all text i nedre fältet och markerar denna? Det är det enda som saknas...

Jag har nu följande funktioner:

tell application "Mail"
	set header detail to default
end tell

för att visa headers och

tell application "Mail"
	set header detail to none
end tell

för att gömma dem igen. Dock så har de båda stor bokstav i Mail-inställningarna, således 'Default' och 'None'. Visa-skriptet funkar men inte gömma-skriptet. Kan det ha med namnen att göra? Tyvärr accepterar AS inte stora begynnelsebokstäver utan ändrar dem automatiskt till små!

Vad göra?

  • Medlem
  • 2004-08-13 23:58

Fick du ordning på det?

Vad som står i Mails dialogruta har ingen som helst koppling till egenskaper och värden som du kan använda i AppleScript. Att kolla i programmens ordlistor är a och o när det gäller att skriva AppleScript. Utan dem kommer man inte långt.

Kolla i ordlistan för Mail så ser du vilka värden du kan sätta "header detail" till. Rätt värden är "default" respektive "no headers" (utan fnuttar). "none" misstänker jag bara sätter "header detail" till inget värde alls.

Du öppnar enklast ordlistan genom att dra ikonen för Mail och släppa den på Manusredigeraren i Dockan. Egenskapen (property) "header detail" hittar du i Mail->Klasser->application.

Lycka till! (eller köp in en konsult... )

Jodå, visandet och gömmandet av header-detaljerna funkar nu. Har inte jobbat på det på det sen före midsommar.

Nu vill jag marker "allt", dvs headers och meddelande och kopiera det till minnet, därefter starta ett skript som ligger i service-menyn.
Ska fundera på hur man kan göra det.

Uppdatering:

Del ett av skriptet tar det första mailet i mappen "Folder" och visar header-detaljerna. Därefter har jag ett problem med att få Mail att fokusera på "preview"-fönstret så att skriptet kan fortsätta.

Del två funkar nämligen från det att preview-fönstret är markerat. Header och meddelande markeras och sedan triggas en service-funktion. Därefter gömmer jag headerdetaljerna igen och växlar till programmet som service-funktionen startade.

Frågan:
Så hur talar jag om för mail att växla fokuseringen från övre mailfönstret med alla mail till det nedre med meddelandet?

Som det är du behålls fokuseringen på övre delen av fönstret. När sedan "markera allt"-kommandot kommer väljer den alla EMAIL isf ett bestämt meddelande.

Någon som vet hur man växlar fokusering. Det skulle kunna triggas med tab-tangenten också men hur triggas den?

property desired_mailbox : "Folder"
tell application "Mail"
	set themailbox to mailbox desired_mailbox as list
	tell front message viewer
		set selected mailboxes to themailbox
	end tell
	if header detail is not default then
		set header detail to default
	end if
	tell front message viewer
		if exists (first message) then
			set current_message to first message
		end if
		(* Nedanstående rad funkar inte!!! *)
		tell application "System Events" to activate scroll area 2 of splitter group 1 of group 1 of window "Siloking — On My Mac" 
		
                tell application "System Events" to click application process "Mail"'s menu bar 1's menu 4's menu item 8
		tell application "System Events"
			tell process "Finder"
				tell menu bar 1
					tell menu bar item "Mail"
						tell menu "Mail"
							tell menu item "Services"
								tell menu "Services"
									tell menu item "DayLite"
										tell menu "DayLite"
											click menu item "Make & Attach Note from Apple Mail Text"
										end tell
									end tell
								end tell
							end tell
						end tell
					end tell
				end tell
			end tell
		end tell
	end tell
	
	if header detail is not no headers then
		set header detail to no headers
	end if
end tell
Senast redigerat 2004-08-23 15:39

Är det ingen som vet hur man byter fokus från övre fönstret med listan med mails till det nedre med själva innehållet i det markerade mailet?

Det är här jag sitter fast. Skulle väldigt gärna vilja göra färdigt det här skriptet. Vet någon vad det båda "delfönstren" kallas? Finns det något "focus on ..."-kommando eller liknande?

Nyfiken, gick det nåt vidare med detta script, för dig, Marcus?

Är lite små-inne på att köpa Daylite för min firma. Har det kommit någon utökad AppleScript-support för Daylite som gör det enklare än att göra det du försöker göra ovan? Denna tråd har ju några år på nacken... om vi säger så.

Henrik

1
Bevaka tråden