Applescript: var lär man sig syntaxen?

Tråden skapades och har fått 18 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2006-10-01 16:29

Jag försöker skriva ett busenelt script för InDesign. Jag har läst "komma igång med skript"-dokumenten som följer med InDesign, både hur man skriptar och vilka termer man ska använda. Men jag får inte till det.

Manusredigeraren klagar hela tiden på att den förväntar sig ditt efter datt men påträffade dutt och liknande. Det måste ju bero på att jag inte har fattat hur man gör och vilka variabler man kan använda.

Var lär jag mig detta?

prova den här guiden

http://www.fischer-bayern.de/as/as4as/AS4AS_e.pdf#search=%22applescript%20for%20absolute%20starters%22

rent generellt kan man säga att det man som nybörjare brukar gå bet på är att man antingen inte "talar" till rätt "objekt" eller att man inte talar på ett sätt objektet förstår.

det bästa sättet är att först prova om man kan nå objektet, vilket man lättast gör med kommandot "get", t.ex.

tell application "Adobe InDesign CS2"
get active document
end tell

vilket lyckas, alltså kan du fråga eller be det om olika saker, t.ex:

tell application "Adobe InDesign CS2"
tell active document
display dialog (get name)
make text frame
end tell
end tell

Men det viktigaste att ha i minnet är att man pratar till rätt objekt, först därefter är det ens lönt att försöka fundera på hur man ska prata med det.

Macscripter är ett bra ställe. Forum med gott om hjälpsamma utvecklare och skola i hur det fungerar: http://macscripter.net/

  • Medlem
  • 2006-10-01 21:27
tell application "Finder"
	copy file "hd:users:~usr:desktop:Bild 1.png" to folder "hd:users:~usr:desktop:Ny mapp:Bild 1.png"
end tell

Jag kan inte ens få till ovanstående.

Vad heter ram på skripspråk? Försöker jag med frame får jag bara felmeddelanden. Faan. Byter jag ut frame mor document i nedanstående försök får jag felet "Syntax error Förväntade ”then” osv. men hittade identifierare."

tell application "Adobe InDesign CS2"
	set myColor to "[Svart]"
	
	tell active document
		if text "Omkretsen" in active frame is character color "C-grön" then replace color "C-grön" with myColor
		
	end tell
end tell
Ursprungligen av Baron:

"... to folder "hd:users:~usr:desktop:Ny mapp:Bild 1.png"

jag är ingen hejjare på applescript, men 'Bild 1.png' låter inte som en folder...?

  • Medlem
  • 2006-10-01 21:51

ajdå, en rest från ett desperat försök att få dit bildjäveln. Det fungerade inte utan den biten heller.

  • Medlem
  • Mölndal
  • 2006-10-01 21:52

Man kan väl inifrån Script Editor öppna "Dictionary" för en viss applikation och se vilka objekt den tillhandahåller?

Jag tror jag har hittat felet: Du skriver att du försöker göra ett "busenelt" script

Men allvarligt talat: Kommandot du ska använda för att kopiera är "duplicate" inte "copy" (som lustigt nog är något helt annat i AppleScript)

Vad gäller InDesign-scriptet så är det så många fel så att det inte är lönt att kommentera det, men jag vill bara säga att du just bröt mot det råd jag gav dig - att alltid kolla om du kan nå objektet innan du försöker göra något med det.

Om du följt det skulle du se att det inte finns något som heter "active frame". Det du är ute efter är "item 1 of selection whose class is text frame"

Problemet är att det är en alldeles för förenklad och delvis felaktig ansats du tar, för dels kan det finnas flera textramar, men framför allt kan en textram ha många bokstäver som var och en har sin egen färg.

Tillvägagångssättet borde vara att, precis som när du söker i gränssnittet, ange sök- och ersättinställningar och utföra sökningen på markeringen.

  • Medlem
  • 2006-10-01 22:08

Det var duplicatescrptet jag tyckte borde vara busenkelt.:)

  • Medlem
  • 2006-10-01 22:11

det sket sig det också... Jag får väl köpa kompetensen i stället. Vart vänder man sig?

För en riktigt basic tutorial gillar jag verkligen Bill Briggs "Applescript Primer" som han skrev för läänge sedan. Det mesta av den gäller faktiskt fortfarande och är riktigt bra.
Scrolla längst ned på denna länken och jobba dig uppåt.
http://maccentral.macworld.com/features/applescriptprimer00/

  • Medlem
  • International user
  • 2006-10-02 11:21

Du håller på med två olika saker. Först anväder du HFS filsystemets sökväg men sen använder du ~ som är unix. Prova att byta ut ~ till rätt namn. Eller så använder du Posix sökvägen "~/Desktop/Bild 1.png" men för det måste du ange att du använder posix sök väg sitter på Windows nu så jag kan inte kolla hur det skrevs exakt. Och antagligen ska du inte ha Bild 1.png med i slutklämmen.¨

Med andra ord så här:

tell application "Finder"
copy file "HD:Users:kortAnvädarNamn:desktop:Bild 1.png" to folder "HD:Users:kortAnvändarNamn:desktop:Ny mapp"
end tell

Nästa fråga existerar Ny mapp i Desktop?

du får inte heller har rad brytningar i samma kodrad utan att ange det med radrytnings tecken. cmd-retur eller nåt sånt frör att få fram det.

  • Medlem
  • Stockholm
  • 2006-10-02 16:53

Det är enkelt att lära sig det som är Applescript "ur lådan". Sedan gör ju respektive utvecklare sina applikationer mer eller mindre skriptbara, och väljer sin egen terminologi. Vilket på ett sätt är helt fantastiskt. På ett annat oerhört frustrerande! Därför kan man inte lära sig Applescript med en bok. Jag har använt en del Applescript, men aldrig för att scripta Indesign. Således kan jag en del om Applescript, utan att kunna hjälpa dig ett dugg! (Annat än med sura, oerhört generella inlägg som detta)

Vänligen, Ylan

  • Medlem
  • International user
  • 2006-10-02 17:37
Ursprungligen av Ylan:

Det är enkelt att lära sig det som är Applescript "ur lådan". Sedan gör ju respektive utvecklare sina applikationer mer eller mindre skriptbara, och väljer sin egen terminologi.
Vänligen, Ylan

Just det ja du får upp utveklarens ordbok genom att från menyn öppna denna ordbok och bläddra fram till det program du vill scripta. I detta fall InDesing.

Och - skaffa Script Debugger från Late Night Software.

Det finns ingen investering som betalar tillbaka sig så snabbt som den, om man vill lära sig AppleScript.

Själv upplever jag det som nära tortyr att behöva jobba i Manusredigeraren.

  • Medlem
  • Stockholm
  • 2006-10-03 12:57
Ursprungligen av Richard Rönnbäck:

Och - skaffa Script Debugger från Late Night Software.

Det finns ingen investering som betalar tillbaka sig så snabbt som den, om man vill lära sig AppleScript.

Själv upplever jag det som nära tortyr att behöva jobba i Manusredigeraren.

Men man skall väl ägna en hel del tid åt Applescript för att investeringen skall betala sig?

Vänligen, Ylan

Tja, det beror på vad man menar med en hel del. Programmet kostar 1300-1400 kr och om det gör att man kan skriva sina AppleScript fem gånger så snabbt (och bra) så tycker jag det är värt det.

En av mina bästa investeringar någonsin!

  • Medlem
  • 2009-01-25 13:54

haha, kul tråd så här drygt två år senare.
Nu har jag ju lärt mig en del om syntax och har framför allt lärt mig hur jag lär mig mer på egen hand.

Tack Richard för all hjälp!
(Det låter som om jag ska lägga av eller så... )

1
Bevaka tråden