HUOM! Voit itse lisätä ja muuttaa sisältöä muokkaa-painikkeiden avulla

 Olet itse vastuussa tämän teoksen käytöstä aiheutuvista vahingoista Lue lisää.

Applescript

Kohteesta Wikikko - kansan taitopankki
Loikkaa: valikkoon, hakuun

Yleistä[muokkaa]

AppleScript on englannin kieltä muistuttava ohjelmointikieli macOS-käyttöjärjestelmässä. Ajettaessa komennot käännetään tapahtumiksi, joilla voidaan hallita muita ohjelmia. Scripting Bridge yhdistää Pythonin, Rubyn ja olio-C:n AppleScriptiin. Nämä scriptable-sovellukset sijaitsevat Apple Events dictonary:ssa. AppleScripitin kehitys ja tuki on ilmeisesti lakannut Mac OS X 10.6 versioon. Mutta toimii vielä High Sierra:ssa (2018).

About AppleScript

Sijoittamatta[muokkaa]

if (checkbox "Teksti tähän" of window 1) is true then set save_Script to true
set theCheckbox to checkbox of window 1
set theCheckbox to make checkbox with properties {static label:"Teksti tähän", checked state:true}

Kirjastoja[muokkaa]

http://applescript.bratis-lover.net/library (Brati's Lover -kirjasto sisältää erittäin hyödyllisiä "handlereita" eri tilanteisiin!!!)

Ohjeita[muokkaa]

Applen ohjesivu, jossa ohjeet alkuun pääsemiseksi ja useita hyödyllisiä skriptejä.
Käytettävissä olevat komennot

Malliohjelmia[muokkaa]

OSX ohjelmia. Esimerkiksi Safari välilehtien tallentaminen.
http://www.macosxautomation.com/training/applescript/18.html

Perusohjeet[muokkaa]

  1. Ohjelmat > Lisäohjelmat > AppleScript-editori
  2. Varmista, että editorin vasemmassa yläkulmassa lukee AppleScript
  3. Skripti kirjoitetaan ruutuun ja testataan painamalla 'suorita ("play", cmd-r)'-painiketta.
  • Jos skriptissä on virheitä, ohjelman suoritus ei ala tai se keskeytyy. Skriptin tallennus tapahtuu normaalisti ja iCloud Drivesta löytyy oma hakemisto Script Editor.
  • \n on rivinvaihto, \t on sarkain, alt-välilyönti on "toisenlainen" välilyönti

Kommentointi[muokkaa]

  • Yksi rivi: rivin alkuun: --
  • Useampi rivi: (* huomiotta jätettävät rivit tällä välillä *)

Muuttuja[muokkaa]

set muuttujaJotain to “teksti”
set muuttujaJotain to 5

Listat/Luettelot[muokkaa]

  • Muuttujan asettaminen listalta
set jokuMuuttuja to item i of jokuLista

Peruskomentoja[muokkaa]

If[muokkaa]

if ehto then
	tell jotain
	end tell
else if ehto then
	tell jotain
else
	tell jotain
	end tell
end if

Repeat[muokkaa]

repeat with i from 1 to length of jokuLista
	set seuraavaListalta to item i of jokuLista
	tähän mitä toistetaan
end repeat

Funktio[muokkaa]

  • Toiminnot voiaan jakaa funktioiksi, joita kutsutaan tarpeen mukaan.
on FunktionNimi(muuttuja1, muuttuja2) TAI FunktionNimi()
	toiminta
end FunktionNimi
  • Funktion kutsuminen

FunktionNimi(muuttuja1,muuttuja2) TAI FunktionNimi()

Valikko ohjelman suorittamiseen[muokkaa]

KESKENERÄINEN eli puuttuu repeat-toiminto

-- Valikko
--repeat
tell application "System Events"
	activate
	set toimintaVaihtoehdot to {“Toiminto 1”, “Toiminto2”}
	choose from list toimintaVaihtoehdot with prompt "Valitse suoritettava toiminto:"
	set toimintoValinta to result as text
end tell

if toimintoValinta is “Toiminto 1" then
	ToimintaFunktio1()
end if

if toimintoValinta is “Toiminto 2" then
	ToimintaFunktio2(muuttuja1, muuttuja2)
end if

if toimintoValinta is "Cancel" then
end if
--end repeat

Tulostus[muokkaa]

  • Perusponnahdusikkuna, jolla voi tulostaa tekstiä ja muutujien tietoa
display dialog "Teksti tähän"
display dialog "Teksti tähän" & jokuMuuttuja buttons "Ok"
display dialog jokuMuuttuja buttons "Ok"
  • Rivinvaihto ponnahdusikkunassa tapahtuu kirjoittamalla editorissa rivinvaihtokohtaan \n ja jatkamalla kirjoittamista. Kun skripti ajetaan tai tallennetaan editori muotoilee rivit uudestaan ja poistaa \n -merkin.
  • Ponnahdusikkuna: ilmoitus kun toimitaan repeat-silmukassa
-- Ilmoitus
	set ilmoitusKysymys to display alert “Otsikko ilmestyy lihavoituna
" message “Varsinainen teksti tähän.” buttons {"Keskeytä", "Jatka"} default button "Jatka"
	set vastaus to button returned of ilmoitusKysymys
	if vastaus is equal to "Keskeytä" then
		exit repeat
	end if
  • Ponnahdusikkuna: ilmoitus
set ponnahdusIkkuna to "Päiväys ja aika on " & (current date) & "."
display dialog ponnahdusIkkuna
  • Ponnahdusikkuna: varmistus
set varmistusKysymys to display alert "Aloitetaanko toiminto." buttons {"Keskeytä", "Aloita"} default button "Aloita"
set vastaus to button returned of varmistusKysymys
if vastaus is equal to "Keskeytä" then
	exit repeat -- poistutaan silmukasta, jossa ollaan 
end if
  • Ponnahdusikkuna: 'Mitä tehdään seuraavaksi' tavanomaisena ponnahdusikkunana
set ponnahdusIkkuna to "Oho, nyt tapahtui virhe. Mitäs aiot seuraavaksi duunata?”
display dialog ponnahdusIkkuna buttons {"Pysäytä", "Jatka"} default button "Jatka" cancel button "Pysäytä" with icon caution giving up after 5

Jos virheilmoitus: A identifier can’t go after this “"”. niin duunata? sanan jälkeen viimeinen sitaatti on todennäköisesti virheellinen, joten paina se uudestaan shift-2

  • Ponnahdusikkuna: 'Mitä tehdään seuraavaksi' varoitus-ponnahdusikkunana
display alert "Oho, nyt tapahtui virhe." message "Ei ole kyllä tietoa mitä tarkalleen tapahtui. Jatketaanko kuitenkin?" as critical buttons {"Pysäytä", "Jatka"} default button "Jatka" cancel button "Pysäytä"
  • Ponnahdusikkuna if-komennolla
set question to display dialog "Vastaa kyllä tai ei" buttons {"Kyllä", "Ei"} default button 1
set answer to button returned of question
if answer is equal to "Kyllä" then
	display dialog "Vastasit kyllä" buttons {"Sulje"}
else
	display dialog "Vastasit ei" buttons {"Sulje"}
end if
  • Musiikkikappaletta toistavan Spotify-ohjelman kappaleen nimi ponnahdusikkunaan
tell application "Spotify"
	set kappaleenNimi to get the name of the current track
end tell
display dialog kappaleenNimi
  • tell application "Spotify" to get the name of the current track
  • Ohjelma joka lisäksi testaa onko Spotify päällä ja tulosta artistin nimen
if application "Spotify" is not running then
	display dialog "Spotify ei ole päällä"
else
	tell application "Spotify"
		set soivaKappale to get the name of the current track
		set soivaKappaleArtisti to get the artist of the current track
	end tell
	display dialog "Soivan kappaleen nimi on " & soivaKappale & " ja artistin nimi on " & soivaKappaleArtisti & "."
end if

Puhe[muokkaa]

say "Puhuttava teksti." using "Satu" volume 1 -- äänenvoimakkuus asteikolla 0 - 1

Tietojen pyytäminen[muokkaa]

  • Tiedon pyytäminen
-- Pyydetään tietoa käyttäjältä
set jokuKysymys to display dialog "Kirjoita tiedoston nimi." default answer "" with icon note buttons {"Keskeytä", "Seuraava"} default button "Seuraava"
set vastaus to button returned of jokuKysymys
if vastaus is equal to "Keskeytä" then
	exit repeat
else
	set jokuMuuttuja to text returned of jokuKysymys
end if
  • Yksi tieto tai lista useammalla rivillä ja siihen kuulumattomien poistaminen
-- Pydetään käyttäjältä yhtä tietoa tai listaa useammalla rivillä, esimerkiksi kopioitu excelin sarake
	set tiedusteltavaKysymys to display dialog “Anna tiedot“ default answer linefeed with icon note buttons {"Keskeytä", "Seuraava"} default button "Seuraava"
	set vastaus to button returned of tiedusteltavaKysymys
	if vastaus is equal to "Keskeytä" then
		exit repeat — toiminto suoritetaan silmukassa, josta tässä lähdetään pois
	else
		set kysymysTeksti to text returned of tiedusteltavaKysymys
		if kysymysTeksti does not contain “jokuvaatimus” then — esimerkiksi https
			display alert “Anna jokuvaatimus”
			exit repeat -- poistutaan silmukasta
		else
			set lista to every paragraph of kysymysTeksti
	-- poistetaan listalta siihen kuulumattomat, esim. tyhjät rivit
		set listaltaPoistettavat to {""} -- "" tarkoittaa tyhjät rivit. Lisää tarvittaessa muuta poistettavaa pilkulla erotettuna
		set puhdasLista to {}
		repeat with i from 1 to count lista
			if {lista's item i} is not in listaltaPoistettavat then set puhdasLista's end to lista's item i
				end repeat
			end if
	end if
  • Valintaikkuna
tell application "System Events"
	activate
	set valintaLuettelo to {"Vaihtoehto 1", "Vaihtoehto 2", "Vaihtoehto 3"}
	choose from list valintaLuettelo with prompt "Valitse joku seuraavista:" default items {"Vaihtoehto 2"}
	set valinta to result as text
end tell

Ohjelman käynnistäminen[muokkaa]

if application "Messages" is not running then -- testataan onko ohjelma käynnissä
	tell application "Messages" to activate
else
	tell application "Messages" -- avataan jo auki oleva ohjelma ruudulle 
		activate
		set visible of windows to true
	end tell
end if

Aktiivinen ohjelma-ikkuna[muokkaa]

tell application "System Events" to set aktiivinenOhjelma to name of first process where frontmost is true

Ikkunan sijoittaminen ruudulla[muokkaa]

tell application "System Events"
	set position of first window of application process "Messages" to {50, 100} -- ikkunan vasen yläkulma (x, y)
end tell
  • Ikkunan uudelleensijoittaminen
    • Näyttöruudun koon voi olla esim. 2560 x 1440, 2840 x 2200 jne. Ruudun yläkulma on 0, 0.
    • Ikkunan paikka voidaan määrittää esim. nejän luvun avulla: {vasen yläkulma x, vasen yläkulma y, oikea alakulma x, oikea alakulma y}
    • Painamalla shift-cmd-4 muuttaa hiiren osoittimen tähtäimeksi, joka näyttää osoittimen paikan kahdella luvulla. Ylempi luku on x ja alempi y. Tällä on helppo määritellä esimerkiksi haluttu ikkunan sijainti. Muutoin ikkunoiden sijainti on plus- ja vähennyslaskua.
    • Ruudun yläkulmaan y-koordinaattiin ja tarvittaessa x-koordinaattiin kun lisää 20 ja ruudun suurimmista arvoista kun vähentää 20 ikkuna saattaa asettua paremmin.
    • Ikkunan sijoittelussa voidaan käyttää muuttujia: set the bounds of first window to {(100 + (10 * muuttujaNimi)), (10 + (10 * muuttujaNimi)), (100 + (10 * muuttujaNimi)), (100 + (10 * muuttujaNimi))}

Uusi Safari-ikkuna[muokkaa]

tell application "Safari"
	(make new document) activate
	open location "http://www.yle.fi"
	tähän muita toimintoja jotka suoritetaan Safarissa
end tell
tell application "Safari"
	activate -- ei aina pakollinen
	make new document with properties {URL:"http://www.yle.fi"}
	make new document with properties {URL:jokuMuuttuja}
end tell
to avaaVerkkosivu(verkkoSivu)
	tell application "Safari"
		activate
		tell window 1
			set current tab to (make new tab with properties {URL:avattavaSivu})
		end tell
	end tell
end avaaVerkkosivu
-- avaaVerkkosivu("http://www.yle.fi") -- tällä avataan haluttu sivu
  • Odotetaan sivun latautumista valmiiksi

delay 1 -- odotetaan tarvittaessa esim. 1 sekunti

-- Avataan sivu uuteen Safari-ikkunaan		
tell application "Safari"
	activate
	make new document with properties {URL:"http://www.yle.fi"}
	-- Odotetaan sivun latautumista valmiiksi									
	delay 1
	tell document 1
		repeat until ("</html>" is in its source)
			delay 5
		end repeat
	end tell
end tell

Safari-ikkunan sulkeminen[muokkaa]

tell application "Safari"
	close current tab of front window
end tell

Safari-ikkunasta haku[muokkaa]

  • Haku tehdään lähdekoodista
https://macscripter.net/viewtopic.php?id=37175
-- Sivustosta linkin haku
tell application "Safari"
	set valilehdenKoodi to source of front document
	-- set validehdenUrl to URL of front document
	if valilehdenKoodi contains "rel=\"teksti\">jotain</a>" then -- tähän miten url tunnistetaan
		set tilapainenHTMLTiedosto to "tiedosto_tilapainen"
		set i to URL of document 1
		-- set r to do shell script "echo " & quoted form of i & " | sed 's|/$||;s|:|%3A|g;s|/|%2F|g'"
		do shell script "curl " & i & " > " & quoted form of ((system attribute "HOME") & "/Desktop/" & tilapainenHTMLTiedosto & ".txt") -- tallennetaan lähdekoodi tiedostoksi
	else
	end if
end tell

Safari-lähdekoodin tallentaminen[muokkaa]

tell application "Safari"
	(make new document) activate
	open location "http://www.yle.fi"
	-- Odotetaan sivun latautumista valmiiksi	
	delay 1
	tell document 1
		repeat until ("</html>" is in its source)
			delay 5
		end repeat
	end tell
	set tilapainenHTMLTiedosto to "tiedosto_tilapainen"
	set a to URL of document 1
	do shell script "curl " & a & " > " & quoted form of ((system attribute "HOME") & "/Desktop/" & tilapainenHTMLTiedosto & ".txt") 
end tell

Tallennetusta HTML-lähdekoodista linkkien etsiminen[muokkaa]

https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/ParseHTML.html
on parseHTMLFile(theFile, theOpeningTag, theClosingTag, returnContentsOnly)
	try
		set theFile to theFile as string
		set theFile to open for access file theFile
		set theCombinedResults to ""
		set theCurrentOpeningTag to ""
		repeat
			read theFile before "<"
			set theCurrentTag to read theFile until ">"
			if theCurrentTag does not start with "<" then set theCurrentTag to ("<" & theCurrentTag) as string
			if theCurrentTag begins with theOpeningTag then
				set theCurrentOpeningTag to theCurrentTag
				if theClosingTag is "" then
					if theCombinedResults is "" then
						set theCombinedResults to theCombinedResults & theCurrentOpeningTag
					else
						set theCombinedResults to theCombinedResults & return & theCurrentOpeningTag
					end if
				else
					set theTextBuffer to ""
					repeat
						set theTextBuffer to theTextBuffer & (read theFile before "<")
						set theTagBuffer to read theFile until ">"
						if theTagBuffer does not start with "<" then set theTagBuffer to ("<" & theTagBuffer)
						if theTagBuffer is theClosingTag then
							if returnContentsOnly is false then
								set theTextBuffer to theCurrentOpeningTag & theTextBuffer & theTagBuffer
							end if
							if theCombinedResults is "" then
								set theCombinedResults to theCombinedResults & theTextBuffer
							else
								set theCombinedResults to theCombinedResults & return & theTextBuffer
							end if
							exit repeat
						else
							set theTextBuffer to theTextBuffer & theTagBuffer
						end if
					end repeat
				end if
			end if
		end repeat
		close access theFile
	on error theErrorMessage number theErrorNumber
		try
			close access theFile
		end try
		if theErrorNumber is not -39 then return false
	end try
	return theCombinedResults
end parseHTMLFile

on parseHTMLTag(theHTMLTag)
	set AppleScript's text item delimiters to "\""
	set theHTMLTagElements to text items of theHTMLTag
	set AppleScript's text item delimiters to ""
	if length of theHTMLTagElements is greater than 1 then return item 2 of theHTMLTagElements
	return ""

end parseHTMLTag

-- Etsitään linkki tiedostoon tallennetusta lähdekoodista
set tilapainenTiedosto to "KOVALEVYNNIMI Media:Users:käyttäjänimi:Desktop:tiedostonimi.txt"
set loydettyLinkki to parseHTMLFile(tilapainenTiedosto, "<a href=\"https://haettavaosoite", "</a>", false)
-- Puhdistetaan löydetty linkki
set loydettyLinkkiPuhdas to parseHTMLTag(loydettyLinkki)

Satunnaisnumero[muokkaa]

set satunnainenNumero to random number from 1 to 999

Muuttujan sisältö leikepöydälle[muokkaa]

-- Asetetaan muuttujien sisällöt leikepöydälle
set the clipboard to (muuttuja1 & " " & muuttuja2)

Näppäimistöltä ohjaaminen[muokkaa]

  • Ohjelmia voidaan ohjata myös "näppäimistöltä"
Näppäinkomennot, joita kutsutaan key code numero
tell application "System Events"
	key code 19 using {control down} -- ctrl + 2 vaihtaa näyttöön numero kaksi
end tell
delay 1.0 -- lisätään tarvittaessa viivettä ennen seuraavaa toimenpidettä

* Safari-sivu sähköpostiksi 
<pre>
tell application "System Events"
	tell process "Safari"
		set frontmost to true
		click menu item "Email This Page" of menu of menu item "Share" of menu "File" of menu bar 1
	end tell
end tell

Tekstin muokkaaminen[muokkaa]

Esimerkiksi muuttujassa olevasta tekstistä sen osien poistaminen tai muuttaminen tapahtuu esim. http://applescript.bratis-lover.net/library -sivulla olevien skriptien avulla kuten RemoveFromString

Tiedostonimen asettaminen[muokkaa]

  • Satunnaisnumeroa käyttäen
set satunnainenNumero to random number from 1 to 99999
set tiedostoNimi to "Tiedostonimi" & satunnainenNumero & ".txt"

Tiedostopolun asettaminen[muokkaa]

  • set tiedostoPolku to "~/Desktop/" & tiedostoNimi
  • Katso kovalevynnimi esimerkiksi Finderista kohdasta Devices, jossa se on ilmoitettu niin, että asetat koko nimen ennen kaksoispistettä. Esimerkissä nimi sisältää sanan Media. Käyttäjätunnuksen saat tietää esim. pääteohjelmassa komennolla pwd
set tiedostoPolku to "KOVALEVYNNIMI Media:Users:kayttajatunnus:Desktop:tiedostonimi.txt"
  • Tiedostonimen ja hakemiston valitseminen
set jokuPolku to choose file name with prompt "Tallenna tiedostoon:"
set jokuPolku to jokuPolku & ".txt" as text -- lisätään .txt ja määritellään tekstitiedostoksi
  • Tiedoston valitseminen ponnahdusikkunassa
set jokuPolku to choose file with prompt "Valitse tiedosto:" 
  • Kuvatiedoston valitseminen ponnahdusikkunassa

set tiedostoNimi to choose file with prompt "Valitse kuvatiedosto:" of type {"public.image"}

  • Tiedostonimen muuttaminen muotoon: /Users/käyttäjänimi/Desktop/tiedostonimi.jpg

set tiedostoNimi to choose file with prompt "Valitse kuvatiedosto:" of type {"public.image"} set tiedostoNimi to POSIX path of the tiedostoNimi

  • Tiedosto-info?
display dialog name of (info for "/Users/käyttäjänimi/Desktop/hakemisto/tiedostonimi.jpg")

Tiedostojen määrä kansiossa[muokkaa]

-- Haetaan työpöydällä olevasta kansiosta tiedostojen lukumäärä
tell application "Finder"
	set tyopoyta to path to desktop folder
	set tiedostoKansio to folder "kansionnimi" of tyopoyta
	count files of tiedostoKansio
	set tiedostojenLkm to result
end tell

Tiedoston tallentaminen[muokkaa]

  • Komentorivikomennolla echo. >> kirjoittaa tiedoston jatkoksi ja pelkkä yksi > kirjoittaa uuden tiedoston. Joku muuttuja voi olla esim. teksti tai linkki.
do shell script "echo " & jokuMuuttuja & " >> ~/Desktop/" & tiedostoNimi & ".txt"

Tiedoston lukeminen[muokkaa]

on lueTiedosto()
	set jokuLuettelo to {}
	set tiedosto to choose file of type "txt" with prompt "Valitse tiedosto:"
	open for access tiedosto
	set jokuLuettelo to (read tiedosto) as text
	close access tiedosto
	-- display dialog linkkiLuetteloc
	return jokuLuettelo
end lueTiedosto

Tiedoston poistaminen[muokkaa]

tell application "Finder"
	try
		set tyopoyta to path to desktop folder
		set polku to folder "kansionimi" of tyopoyta
		delete the file "tiedostonimi.txt" in polku
		delete (every item of polku whose name ends with ".jpg")
		delete (every item of folder (path to desktop folder) whose name begins with "tiedostonimenalku")
	on error
		display dialog ("Tiedostojen poistaminen ei onnistunut") buttons {"Ok"}
	end try
end tell

Tiedoston lataaminen internetistä[muokkaa]

  • Nouto internetistä tietokoneen hakemistoon listan mukaan. Lista voi olla esimerkiksi käyttäjältä pyydettyjä tiedostonnimiä tai internetosoitteita.
set tiedostoPolku to "~/Desktop/"
repeat with i from 1 to length of jokuLista
	set kuvanOsoite to item i of jokuLista
	set hakuKomento to "/opt/local/bin/wget -P " & kuvanOsoite
	set hakuKomento to "/opt/local/bin/wget -P " & tiedostoPolku & "/ " & kuvanOsoite
	do shell script hakuKomento
end repeat

Tiedoston tunnistenumero (ID)[muokkaa]

  • Vastaus esim. com.apple.iChat
tell application "Finder"
	get id of application file "Messages" of folder "Applications" of startup disk
end tell

Puhdas URL-osoite HTML-tekstistä[muokkaa]

on parseHTMLTag(theHTMLTag)
	set AppleScript's text item delimiters to "\""
	set theHTMLTagElements to text items of theHTMLTag
	set AppleScript's text item delimiters to ""
	if length of theHTMLTagElements is greater than 1 then return item 2 of theHTMLTagElements
	return ""
end parseHTMLTag
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/ParseHTML.html

Uusi tekstitiedosto työpöydälle[muokkaa]

set tiedostoNimi to "tiedostonimi.txt"
set polku to (path to desktop from user domain) as string
set tiedosto to polku & tiedostoNimi
tell application "Finder"
	if not (exists file tiedosto) then
		make new file at folder polku with properties {name:tiedostoNimi}
	end if
end tell

Tiedostonimen muuttaminen[muokkaa]

-- Asetetaan tiedostopolku
set polku to "~/Desktop"
-- Pyydetään kuvalle uusi nimi
set nimiKysymys to display dialog "Uuden tiedoston nimi?" default answer "" with icon note buttons {"Lopeta", "Seuraava"} default button "Seuraava"
set vastaus to button returned of nimiKysymys
if vastaus is equal to "Lopeta" then
	exit repeat
else
	set uusiNimi to text returned of nimiKysymys
end if
-- Nimetään tiedosto uudestaan 
-- set vanhaNimi to rightStringFromRight(kuvanOsoite, "/") -- ks. rightStringFromRight -skripti tältä sivulta
tell application "System Events" to set name of file (polku & "/" & vanhaNimi) to (uusiNimi & ".jpg")

Toiminnan etenemisen seuraaminen[muokkaa]

-- Asetetaan seuranta
set kohteidenLkm to length of jokuLista
set progress total steps to kohteidenLkm
set progress completed steps to 0
set progress description to "Suoritetaan jotain..."
set progress additional description to "Valmistaudutaan johonkin."
repeat with i from 1 to length of jokuLista
	set progress additional description to "Suoritetaan kohdetta " & i & " / " & kohteidenLkm
	toiminta tähän
	set progress completed steps to i
end repeat

Päätekomennon suorittaminen[muokkaa]

  • Komentorivin komennossa olevat sitaatit merkitään \" tai \\\". Tarpeen vaatiessa määritetään komennon tiedostopolku, joka täytyy selvittää esim. locate-komennolla pääte-ohjelmassa.
set tiedostoNimi to "~/Desktop/tiedostonimi.txt
set jokuKomento to "/usr/local/bin/komento -a \\\"N%d°%.3f\\\" " & tiedostoNimi
set jokuKomento to "/usr/local/bin/komento -a \\\"N%d°%.3f\\\" " & tiedostoPolku & "/" & tiedostoNimi
do shell script jokuKomento
set jokuMuuttuja to result as text -- tallennetaan komennolta tuleva tieto muuttujaan
do shell script "/bin/bash /Users/<käyttäjätunnus>/polku/tiedostonimi.sh"

Pääte-ohjelma[muokkaa]

#!/bin/bash
osascript <<EOF
tell application "Safari"
end tell
EOF
chmod +x ~/Desktop/tiedostonimi

Python ja AppleSpript[muokkaa]

AppleScipt–Python -muunnostalulukko

Python-komennon suorittaminen Apple Scriptissä[muokkaa]

do shell script "python -c 'print \"Teksti\"'"

Python-ohjelman kutsuminen Apple Scriptissä[muokkaa]

Seuraava skripti suorittaa työpöydällä olevan Python ohjelman.

Jostain syystä tämä ei kuitenkaan suorita kirjastojen hakuja.

set script_path to "$HOME/Desktop/"
do shell script "python " & script_path & "tiedostonimi.py"
  • Tarvittaessa tekstikoodaus
#!/usr/bin/python
# -*- coding: utf-8 -*-

AppleScriptin kutsuminen Pythonissa[muokkaa]

Seuraava Python-ohjelma laittaa nukkumaan.

import os
os.system("""osascript -e 'tell app "Finder" to sleep'""")
import os
komento = """osascript<<END
komento tähän
usealle riville
end tell
END"""

def aliohjelma():
     os.system(komento)
aliohjelma()

Tämä on epäselvä: Python yhdistetään Scripting Bridge Frameworksin kanssa Apple Scriptiin.

from Foundation import *
from ScriptingBridge import *
iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")
print iTunes.currentTrack().name()

Lähteitä[muokkaa]

http://www.macosxautomation.com/applescript/index.html