<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fi">
	<id>https://wikikko.info/w3/index.php?action=history&amp;feed=atom&amp;title=Applescript</id>
	<title>Applescript - Muutoshistoria</title>
	<link rel="self" type="application/atom+xml" href="https://wikikko.info/w3/index.php?action=history&amp;feed=atom&amp;title=Applescript"/>
	<link rel="alternate" type="text/html" href="https://wikikko.info/w3/index.php?title=Applescript&amp;action=history"/>
	<updated>2026-05-10T18:57:15Z</updated>
	<subtitle>Tämän sivun muutoshistoria</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikikko.info/w3/index.php?title=Applescript&amp;diff=43&amp;oldid=prev</id>
		<title>imported&gt;WikikkoSysop: /* Yleistä */</title>
		<link rel="alternate" type="text/html" href="https://wikikko.info/w3/index.php?title=Applescript&amp;diff=43&amp;oldid=prev"/>
		<updated>2020-02-15T09:41:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Yleistä&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uusi sivu&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Yleistä==&lt;br /&gt;
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). &lt;br /&gt;
&lt;br /&gt;
: [https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptX/Concepts/ScriptingOnOSX.html#//apple_ref/doc/uid/20000032-BABEBGCF About AppleScript]&lt;br /&gt;
&lt;br /&gt;
: Katso myös [[Mac vinkit#Automator]]&lt;br /&gt;
&lt;br /&gt;
== Sijoittamatta ==&lt;br /&gt;
 if (checkbox &amp;quot;Teksti tähän&amp;quot; of window 1) is true then set save_Script to true&lt;br /&gt;
 set theCheckbox to checkbox of window 1&lt;br /&gt;
 set theCheckbox to make checkbox with properties {static label:&amp;quot;Teksti tähän&amp;quot;, checked state:true}&lt;br /&gt;
&lt;br /&gt;
== Kirjastoja ==&lt;br /&gt;
: http://applescript.bratis-lover.net/library (Brati&amp;#039;s Lover -kirjasto sisältää erittäin hyödyllisiä &amp;quot;handlereita&amp;quot; eri tilanteisiin!!!)&lt;br /&gt;
&lt;br /&gt;
== Ohjeita ==&lt;br /&gt;
: [https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/index.html#//apple_ref/doc/uid/TP40016239-CH56-SW1 Applen ohjesivu, jossa ohjeet alkuun pääsemiseksi ja useita hyödyllisiä skriptejä.]&lt;br /&gt;
: [https://developer.apple.com/library/content/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html Käytettävissä olevat komennot]&lt;br /&gt;
&lt;br /&gt;
== Malliohjelmia ==&lt;br /&gt;
: [[OSX ohjelmia]]. Esimerkiksi Safari välilehtien tallentaminen. &lt;br /&gt;
: http://www.macosxautomation.com/training/applescript/18.html&lt;br /&gt;
: [[Hälytinjärjestelmät|Uuden Safari-ikkunan avaaminen, lomakekenttien täyttäminen ja harmaana olevan kirjautumispainikkeen aktivoiminen ja painaminen]]&lt;br /&gt;
: [http://www.cubemg.com/how-to-click-a-button-on-a-web-page-with-applescript Painikkeiden painaminen nettisivulla ja lomakkeiden täyttäminen]&lt;br /&gt;
&lt;br /&gt;
== Perusohjeet ==&lt;br /&gt;
# Ohjelmat &amp;gt; Lisäohjelmat &amp;gt; AppleScript-editori&lt;br /&gt;
# Varmista, että editorin vasemmassa yläkulmassa lukee AppleScript&lt;br /&gt;
# Skripti kirjoitetaan ruutuun ja testataan painamalla &amp;#039;suorita (&amp;quot;play&amp;quot;, cmd-r)&amp;#039;-painiketta. &lt;br /&gt;
* Jos skriptissä on virheitä, ohjelman suoritus ei ala tai se keskeytyy. Skriptin tallennus tapahtuu normaalisti ja iCloud Drivesta löytyy oma hakemisto Script Editor. &lt;br /&gt;
* \n on rivinvaihto, \t on sarkain, alt-välilyönti on &amp;quot;toisenlainen&amp;quot; välilyönti&lt;br /&gt;
&lt;br /&gt;
=== Kommentointi ===&lt;br /&gt;
* Yksi rivi: rivin alkuun: --&lt;br /&gt;
* Useampi rivi: (* huomiotta jätettävät rivit tällä välillä *)&lt;br /&gt;
&lt;br /&gt;
== Muuttuja ==&lt;br /&gt;
 set muuttujaJotain to “teksti”&lt;br /&gt;
 set muuttujaJotain to 5&lt;br /&gt;
&lt;br /&gt;
== Listat/Luettelot ==&lt;br /&gt;
* Muuttujan asettaminen listalta&lt;br /&gt;
 set jokuMuuttuja to item i of jokuLista&lt;br /&gt;
&lt;br /&gt;
== Peruskomentoja ==&lt;br /&gt;
=== If ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ehto then&lt;br /&gt;
	tell jotain&lt;br /&gt;
	end tell&lt;br /&gt;
else if ehto then&lt;br /&gt;
	tell jotain&lt;br /&gt;
else&lt;br /&gt;
	tell jotain&lt;br /&gt;
	end tell&lt;br /&gt;
end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Repeat ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
repeat with i from 1 to length of jokuLista&lt;br /&gt;
	set seuraavaListalta to item i of jokuLista&lt;br /&gt;
	tähän mitä toistetaan&lt;br /&gt;
end repeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktio ==&lt;br /&gt;
* Toiminnot voiaan jakaa funktioiksi, joita kutsutaan tarpeen mukaan. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
on FunktionNimi(muuttuja1, muuttuja2) TAI FunktionNimi()&lt;br /&gt;
	toiminta&lt;br /&gt;
end FunktionNimi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Funktion kutsuminen&lt;br /&gt;
FunktionNimi(muuttuja1,muuttuja2) TAI FunktionNimi()&lt;br /&gt;
&lt;br /&gt;
== Valikko ohjelman suorittamiseen ==&lt;br /&gt;
KESKENERÄINEN eli puuttuu repeat-toiminto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Valikko&lt;br /&gt;
--repeat&lt;br /&gt;
tell application &amp;quot;System Events&amp;quot;&lt;br /&gt;
	activate&lt;br /&gt;
	set toimintaVaihtoehdot to {“Toiminto 1”, “Toiminto2”}&lt;br /&gt;
	choose from list toimintaVaihtoehdot with prompt &amp;quot;Valitse suoritettava toiminto:&amp;quot;&lt;br /&gt;
	set toimintoValinta to result as text&lt;br /&gt;
end tell&lt;br /&gt;
&lt;br /&gt;
if toimintoValinta is “Toiminto 1&amp;quot; then&lt;br /&gt;
	ToimintaFunktio1()&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
if toimintoValinta is “Toiminto 2&amp;quot; then&lt;br /&gt;
	ToimintaFunktio2(muuttuja1, muuttuja2)&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
if toimintoValinta is &amp;quot;Cancel&amp;quot; then&lt;br /&gt;
end if&lt;br /&gt;
--end repeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tulostus ==&lt;br /&gt;
* Perusponnahdusikkuna, jolla voi tulostaa tekstiä ja muutujien tietoa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
display dialog &amp;quot;Teksti tähän&amp;quot;&lt;br /&gt;
display dialog &amp;quot;Teksti tähän&amp;quot; &amp;amp; jokuMuuttuja buttons &amp;quot;Ok&amp;quot;&lt;br /&gt;
display dialog jokuMuuttuja buttons &amp;quot;Ok&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Rivinvaihto ponnahdusikkunassa tapahtuu kirjoittamalla editorissa rivinvaihtokohtaan \n ja jatkamalla kirjoittamista. Kun skripti ajetaan tai tallennetaan editori muotoilee rivit uudestaan ja poistaa \n -merkin. &lt;br /&gt;
&lt;br /&gt;
* Ponnahdusikkuna: ilmoitus kun toimitaan repeat-silmukassa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Ilmoitus&lt;br /&gt;
	set ilmoitusKysymys to display alert “Otsikko ilmestyy lihavoituna&lt;br /&gt;
&amp;quot; message “Varsinainen teksti tähän.” buttons {&amp;quot;Keskeytä&amp;quot;, &amp;quot;Jatka&amp;quot;} default button &amp;quot;Jatka&amp;quot;&lt;br /&gt;
	set vastaus to button returned of ilmoitusKysymys&lt;br /&gt;
	if vastaus is equal to &amp;quot;Keskeytä&amp;quot; then&lt;br /&gt;
		exit repeat&lt;br /&gt;
	end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ponnahdusikkuna: ilmoitus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set ponnahdusIkkuna to &amp;quot;Päiväys ja aika on &amp;quot; &amp;amp; (current date) &amp;amp; &amp;quot;.&amp;quot;&lt;br /&gt;
display dialog ponnahdusIkkuna&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ponnahdusikkuna: varmistus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set varmistusKysymys to display alert &amp;quot;Aloitetaanko toiminto.&amp;quot; buttons {&amp;quot;Keskeytä&amp;quot;, &amp;quot;Aloita&amp;quot;} default button &amp;quot;Aloita&amp;quot;&lt;br /&gt;
set vastaus to button returned of varmistusKysymys&lt;br /&gt;
if vastaus is equal to &amp;quot;Keskeytä&amp;quot; then&lt;br /&gt;
	exit repeat -- poistutaan silmukasta, jossa ollaan &lt;br /&gt;
end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ponnahdusikkuna: &amp;#039;Mitä tehdään seuraavaksi&amp;#039; tavanomaisena ponnahdusikkunana&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set ponnahdusIkkuna to &amp;quot;Oho, nyt tapahtui virhe. Mitäs aiot seuraavaksi duunata?”&lt;br /&gt;
display dialog ponnahdusIkkuna buttons {&amp;quot;Pysäytä&amp;quot;, &amp;quot;Jatka&amp;quot;} default button &amp;quot;Jatka&amp;quot; cancel button &amp;quot;Pysäytä&amp;quot; with icon caution giving up after 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jos virheilmoitus: A identifier can’t go after this “&amp;quot;”. niin duunata? sanan jälkeen viimeinen sitaatti on todennäköisesti virheellinen, joten paina se uudestaan shift-2&lt;br /&gt;
&lt;br /&gt;
* Ponnahdusikkuna: &amp;#039;Mitä tehdään seuraavaksi&amp;#039; varoitus-ponnahdusikkunana&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
display alert &amp;quot;Oho, nyt tapahtui virhe.&amp;quot; message &amp;quot;Ei ole kyllä tietoa mitä tarkalleen tapahtui. Jatketaanko kuitenkin?&amp;quot; as critical buttons {&amp;quot;Pysäytä&amp;quot;, &amp;quot;Jatka&amp;quot;} default button &amp;quot;Jatka&amp;quot; cancel button &amp;quot;Pysäytä&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ponnahdusikkuna if-komennolla&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set question to display dialog &amp;quot;Vastaa kyllä tai ei&amp;quot; buttons {&amp;quot;Kyllä&amp;quot;, &amp;quot;Ei&amp;quot;} default button 1&lt;br /&gt;
set answer to button returned of question&lt;br /&gt;
if answer is equal to &amp;quot;Kyllä&amp;quot; then&lt;br /&gt;
	display dialog &amp;quot;Vastasit kyllä&amp;quot; buttons {&amp;quot;Sulje&amp;quot;}&lt;br /&gt;
else&lt;br /&gt;
	display dialog &amp;quot;Vastasit ei&amp;quot; buttons {&amp;quot;Sulje&amp;quot;}&lt;br /&gt;
end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Musiikkikappaletta toistavan Spotify-ohjelman kappaleen nimi ponnahdusikkunaan&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;Spotify&amp;quot;&lt;br /&gt;
	set kappaleenNimi to get the name of the current track&lt;br /&gt;
end tell&lt;br /&gt;
display dialog kappaleenNimi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* tell application &amp;quot;Spotify&amp;quot; to get the name of the current track&lt;br /&gt;
&lt;br /&gt;
* Ohjelma joka lisäksi testaa onko Spotify päällä ja tulosta artistin nimen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if application &amp;quot;Spotify&amp;quot; is not running then&lt;br /&gt;
	display dialog &amp;quot;Spotify ei ole päällä&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
	tell application &amp;quot;Spotify&amp;quot;&lt;br /&gt;
		set soivaKappale to get the name of the current track&lt;br /&gt;
		set soivaKappaleArtisti to get the artist of the current track&lt;br /&gt;
	end tell&lt;br /&gt;
	display dialog &amp;quot;Soivan kappaleen nimi on &amp;quot; &amp;amp; soivaKappale &amp;amp; &amp;quot; ja artistin nimi on &amp;quot; &amp;amp; soivaKappaleArtisti &amp;amp; &amp;quot;.&amp;quot;&lt;br /&gt;
end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Puhe ==&lt;br /&gt;
 say &amp;quot;Puhuttava teksti.&amp;quot; using &amp;quot;Satu&amp;quot; volume 1 -- äänenvoimakkuus asteikolla 0 - 1&lt;br /&gt;
&lt;br /&gt;
== Tietojen pyytäminen ==&lt;br /&gt;
* Tiedon pyytäminen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Pyydetään tietoa käyttäjältä&lt;br /&gt;
set jokuKysymys to display dialog &amp;quot;Kirjoita tiedoston nimi.&amp;quot; default answer &amp;quot;&amp;quot; with icon note buttons {&amp;quot;Keskeytä&amp;quot;, &amp;quot;Seuraava&amp;quot;} default button &amp;quot;Seuraava&amp;quot;&lt;br /&gt;
set vastaus to button returned of jokuKysymys&lt;br /&gt;
if vastaus is equal to &amp;quot;Keskeytä&amp;quot; then&lt;br /&gt;
	exit repeat&lt;br /&gt;
else&lt;br /&gt;
	set jokuMuuttuja to text returned of jokuKysymys&lt;br /&gt;
end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Yksi tieto tai lista useammalla rivillä ja siihen kuulumattomien poistaminen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Pydetään käyttäjältä yhtä tietoa tai listaa useammalla rivillä, esimerkiksi kopioitu excelin sarake&lt;br /&gt;
	set tiedusteltavaKysymys to display dialog “Anna tiedot“ default answer linefeed with icon note buttons {&amp;quot;Keskeytä&amp;quot;, &amp;quot;Seuraava&amp;quot;} default button &amp;quot;Seuraava&amp;quot;&lt;br /&gt;
	set vastaus to button returned of tiedusteltavaKysymys&lt;br /&gt;
	if vastaus is equal to &amp;quot;Keskeytä&amp;quot; then&lt;br /&gt;
		exit repeat — toiminto suoritetaan silmukassa, josta tässä lähdetään pois&lt;br /&gt;
	else&lt;br /&gt;
		set kysymysTeksti to text returned of tiedusteltavaKysymys&lt;br /&gt;
		if kysymysTeksti does not contain “jokuvaatimus” then — esimerkiksi https&lt;br /&gt;
			display alert “Anna jokuvaatimus”&lt;br /&gt;
			exit repeat -- poistutaan silmukasta&lt;br /&gt;
		else&lt;br /&gt;
			set lista to every paragraph of kysymysTeksti&lt;br /&gt;
	-- poistetaan listalta siihen kuulumattomat, esim. tyhjät rivit&lt;br /&gt;
		set listaltaPoistettavat to {&amp;quot;&amp;quot;} -- &amp;quot;&amp;quot; tarkoittaa tyhjät rivit. Lisää tarvittaessa muuta poistettavaa pilkulla erotettuna&lt;br /&gt;
		set puhdasLista to {}&lt;br /&gt;
		repeat with i from 1 to count lista&lt;br /&gt;
			if {lista&amp;#039;s item i} is not in listaltaPoistettavat then set puhdasLista&amp;#039;s end to lista&amp;#039;s item i&lt;br /&gt;
				end repeat&lt;br /&gt;
			end if&lt;br /&gt;
	end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Valintaikkuna&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;System Events&amp;quot;&lt;br /&gt;
	activate&lt;br /&gt;
	set valintaLuettelo to {&amp;quot;Vaihtoehto 1&amp;quot;, &amp;quot;Vaihtoehto 2&amp;quot;, &amp;quot;Vaihtoehto 3&amp;quot;}&lt;br /&gt;
	choose from list valintaLuettelo with prompt &amp;quot;Valitse joku seuraavista:&amp;quot; default items {&amp;quot;Vaihtoehto 2&amp;quot;}&lt;br /&gt;
	set valinta to result as text&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ohjelman käynnistäminen ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if application &amp;quot;Messages&amp;quot; is not running then -- testataan onko ohjelma käynnissä&lt;br /&gt;
	tell application &amp;quot;Messages&amp;quot; to activate&lt;br /&gt;
else&lt;br /&gt;
	tell application &amp;quot;Messages&amp;quot; -- avataan jo auki oleva ohjelma ruudulle &lt;br /&gt;
		activate&lt;br /&gt;
		set visible of windows to true&lt;br /&gt;
	end tell&lt;br /&gt;
end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aktiivinen ohjelma-ikkuna ==&lt;br /&gt;
 tell application &amp;quot;System Events&amp;quot; to set aktiivinenOhjelma to name of first process where frontmost is true&lt;br /&gt;
&lt;br /&gt;
== Ikkunan sijoittaminen ruudulla ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;System Events&amp;quot;&lt;br /&gt;
	set position of first window of application process &amp;quot;Messages&amp;quot; to {50, 100} -- ikkunan vasen yläkulma (x, y)&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ikkunan uudelleensijoittaminen&lt;br /&gt;
** Näyttöruudun koon voi olla esim. 2560 x 1440, 2840 x 2200 jne. Ruudun yläkulma on 0, 0. &lt;br /&gt;
** Ikkunan paikka voidaan määrittää esim. nejän luvun avulla: {vasen yläkulma x, vasen yläkulma y, oikea alakulma x, oikea alakulma y}&lt;br /&gt;
** 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. &lt;br /&gt;
** Ruudun yläkulmaan y-koordinaattiin ja tarvittaessa x-koordinaattiin kun lisää 20 ja ruudun suurimmista arvoista kun vähentää 20 ikkuna saattaa asettua paremmin. &lt;br /&gt;
** 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))}&lt;br /&gt;
&lt;br /&gt;
== Uusi Safari-ikkuna ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;Safari&amp;quot;&lt;br /&gt;
	(make new document) activate&lt;br /&gt;
	open location &amp;quot;http://www.yle.fi&amp;quot;&lt;br /&gt;
	tähän muita toimintoja jotka suoritetaan Safarissa&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;Safari&amp;quot;&lt;br /&gt;
	activate -- ei aina pakollinen&lt;br /&gt;
	make new document with properties {URL:&amp;quot;http://www.yle.fi&amp;quot;}&lt;br /&gt;
	make new document with properties {URL:jokuMuuttuja}&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to avaaVerkkosivu(verkkoSivu)&lt;br /&gt;
	tell application &amp;quot;Safari&amp;quot;&lt;br /&gt;
		activate&lt;br /&gt;
		tell window 1&lt;br /&gt;
			set current tab to (make new tab with properties {URL:avattavaSivu})&lt;br /&gt;
		end tell&lt;br /&gt;
	end tell&lt;br /&gt;
end avaaVerkkosivu&lt;br /&gt;
-- avaaVerkkosivu(&amp;quot;http://www.yle.fi&amp;quot;) -- tällä avataan haluttu sivu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Odotetaan sivun latautumista valmiiksi&lt;br /&gt;
	delay 1 -- odotetaan tarvittaessa esim. 1 sekunti &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Avataan sivu uuteen Safari-ikkunaan		&lt;br /&gt;
tell application &amp;quot;Safari&amp;quot;&lt;br /&gt;
	activate&lt;br /&gt;
	make new document with properties {URL:&amp;quot;http://www.yle.fi&amp;quot;}&lt;br /&gt;
	-- Odotetaan sivun latautumista valmiiksi									&lt;br /&gt;
	delay 1&lt;br /&gt;
	tell document 1&lt;br /&gt;
		repeat until (&amp;quot;&amp;lt;/html&amp;gt;&amp;quot; is in its source)&lt;br /&gt;
			delay 5&lt;br /&gt;
		end repeat&lt;br /&gt;
	end tell&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Safari-ikkunan sulkeminen ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;Safari&amp;quot;&lt;br /&gt;
	close current tab of front window&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Safari-ikkunasta haku ==&lt;br /&gt;
* Haku tehdään lähdekoodista&lt;br /&gt;
: https://macscripter.net/viewtopic.php?id=37175&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Sivustosta linkin haku&lt;br /&gt;
tell application &amp;quot;Safari&amp;quot;&lt;br /&gt;
	set valilehdenKoodi to source of front document&lt;br /&gt;
	-- set validehdenUrl to URL of front document&lt;br /&gt;
	if valilehdenKoodi contains &amp;quot;rel=\&amp;quot;teksti\&amp;quot;&amp;gt;jotain&amp;lt;/a&amp;gt;&amp;quot; then -- tähän miten url tunnistetaan&lt;br /&gt;
		set tilapainenHTMLTiedosto to &amp;quot;tiedosto_tilapainen&amp;quot;&lt;br /&gt;
		set i to URL of document 1&lt;br /&gt;
		-- set r to do shell script &amp;quot;echo &amp;quot; &amp;amp; quoted form of i &amp;amp; &amp;quot; | sed &amp;#039;s|/$||;s|:|%3A|g;s|/|%2F|g&amp;#039;&amp;quot;&lt;br /&gt;
		do shell script &amp;quot;curl &amp;quot; &amp;amp; i &amp;amp; &amp;quot; &amp;gt; &amp;quot; &amp;amp; quoted form of ((system attribute &amp;quot;HOME&amp;quot;) &amp;amp; &amp;quot;/Desktop/&amp;quot; &amp;amp; tilapainenHTMLTiedosto &amp;amp; &amp;quot;.txt&amp;quot;) -- tallennetaan lähdekoodi tiedostoksi&lt;br /&gt;
	else&lt;br /&gt;
	end if&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Safari-lähdekoodin tallentaminen ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;Safari&amp;quot;&lt;br /&gt;
	(make new document) activate&lt;br /&gt;
	open location &amp;quot;http://www.yle.fi&amp;quot;&lt;br /&gt;
	-- Odotetaan sivun latautumista valmiiksi	&lt;br /&gt;
	delay 1&lt;br /&gt;
	tell document 1&lt;br /&gt;
		repeat until (&amp;quot;&amp;lt;/html&amp;gt;&amp;quot; is in its source)&lt;br /&gt;
			delay 5&lt;br /&gt;
		end repeat&lt;br /&gt;
	end tell&lt;br /&gt;
	set tilapainenHTMLTiedosto to &amp;quot;tiedosto_tilapainen&amp;quot;&lt;br /&gt;
	set a to URL of document 1&lt;br /&gt;
	do shell script &amp;quot;curl &amp;quot; &amp;amp; a &amp;amp; &amp;quot; &amp;gt; &amp;quot; &amp;amp; quoted form of ((system attribute &amp;quot;HOME&amp;quot;) &amp;amp; &amp;quot;/Desktop/&amp;quot; &amp;amp; tilapainenHTMLTiedosto &amp;amp; &amp;quot;.txt&amp;quot;) &lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tallennetusta HTML-lähdekoodista linkkien etsiminen ==&lt;br /&gt;
: https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/ParseHTML.html&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
on parseHTMLFile(theFile, theOpeningTag, theClosingTag, returnContentsOnly)&lt;br /&gt;
	try&lt;br /&gt;
		set theFile to theFile as string&lt;br /&gt;
		set theFile to open for access file theFile&lt;br /&gt;
		set theCombinedResults to &amp;quot;&amp;quot;&lt;br /&gt;
		set theCurrentOpeningTag to &amp;quot;&amp;quot;&lt;br /&gt;
		repeat&lt;br /&gt;
			read theFile before &amp;quot;&amp;lt;&amp;quot;&lt;br /&gt;
			set theCurrentTag to read theFile until &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
			if theCurrentTag does not start with &amp;quot;&amp;lt;&amp;quot; then set theCurrentTag to (&amp;quot;&amp;lt;&amp;quot; &amp;amp; theCurrentTag) as string&lt;br /&gt;
			if theCurrentTag begins with theOpeningTag then&lt;br /&gt;
				set theCurrentOpeningTag to theCurrentTag&lt;br /&gt;
				if theClosingTag is &amp;quot;&amp;quot; then&lt;br /&gt;
					if theCombinedResults is &amp;quot;&amp;quot; then&lt;br /&gt;
						set theCombinedResults to theCombinedResults &amp;amp; theCurrentOpeningTag&lt;br /&gt;
					else&lt;br /&gt;
						set theCombinedResults to theCombinedResults &amp;amp; return &amp;amp; theCurrentOpeningTag&lt;br /&gt;
					end if&lt;br /&gt;
				else&lt;br /&gt;
					set theTextBuffer to &amp;quot;&amp;quot;&lt;br /&gt;
					repeat&lt;br /&gt;
						set theTextBuffer to theTextBuffer &amp;amp; (read theFile before &amp;quot;&amp;lt;&amp;quot;)&lt;br /&gt;
						set theTagBuffer to read theFile until &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
						if theTagBuffer does not start with &amp;quot;&amp;lt;&amp;quot; then set theTagBuffer to (&amp;quot;&amp;lt;&amp;quot; &amp;amp; theTagBuffer)&lt;br /&gt;
						if theTagBuffer is theClosingTag then&lt;br /&gt;
							if returnContentsOnly is false then&lt;br /&gt;
								set theTextBuffer to theCurrentOpeningTag &amp;amp; theTextBuffer &amp;amp; theTagBuffer&lt;br /&gt;
							end if&lt;br /&gt;
							if theCombinedResults is &amp;quot;&amp;quot; then&lt;br /&gt;
								set theCombinedResults to theCombinedResults &amp;amp; theTextBuffer&lt;br /&gt;
							else&lt;br /&gt;
								set theCombinedResults to theCombinedResults &amp;amp; return &amp;amp; theTextBuffer&lt;br /&gt;
							end if&lt;br /&gt;
							exit repeat&lt;br /&gt;
						else&lt;br /&gt;
							set theTextBuffer to theTextBuffer &amp;amp; theTagBuffer&lt;br /&gt;
						end if&lt;br /&gt;
					end repeat&lt;br /&gt;
				end if&lt;br /&gt;
			end if&lt;br /&gt;
		end repeat&lt;br /&gt;
		close access theFile&lt;br /&gt;
	on error theErrorMessage number theErrorNumber&lt;br /&gt;
		try&lt;br /&gt;
			close access theFile&lt;br /&gt;
		end try&lt;br /&gt;
		if theErrorNumber is not -39 then return false&lt;br /&gt;
	end try&lt;br /&gt;
	return theCombinedResults&lt;br /&gt;
end parseHTMLFile&lt;br /&gt;
&lt;br /&gt;
on parseHTMLTag(theHTMLTag)&lt;br /&gt;
	set AppleScript&amp;#039;s text item delimiters to &amp;quot;\&amp;quot;&amp;quot;&lt;br /&gt;
	set theHTMLTagElements to text items of theHTMLTag&lt;br /&gt;
	set AppleScript&amp;#039;s text item delimiters to &amp;quot;&amp;quot;&lt;br /&gt;
	if length of theHTMLTagElements is greater than 1 then return item 2 of theHTMLTagElements&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
end parseHTMLTag&lt;br /&gt;
&lt;br /&gt;
-- Etsitään linkki tiedostoon tallennetusta lähdekoodista&lt;br /&gt;
set tilapainenTiedosto to &amp;quot;KOVALEVYNNIMI Media:Users:käyttäjänimi:Desktop:tiedostonimi.txt&amp;quot;&lt;br /&gt;
set loydettyLinkki to parseHTMLFile(tilapainenTiedosto, &amp;quot;&amp;lt;a href=\&amp;quot;https://haettavaosoite&amp;quot;, &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;, false)&lt;br /&gt;
-- Puhdistetaan löydetty linkki&lt;br /&gt;
set loydettyLinkkiPuhdas to parseHTMLTag(loydettyLinkki)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Satunnaisnumero ==&lt;br /&gt;
 set satunnainenNumero to random number from 1 to 999&lt;br /&gt;
&lt;br /&gt;
== Muuttujan sisältö leikepöydälle ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Asetetaan muuttujien sisällöt leikepöydälle&lt;br /&gt;
set the clipboard to (muuttuja1 &amp;amp; &amp;quot; &amp;quot; &amp;amp; muuttuja2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Näppäimistöltä ohjaaminen ==&lt;br /&gt;
* Ohjelmia voidaan ohjata myös &amp;quot;näppäimistöltä&amp;quot;&lt;br /&gt;
: [https://eastmanreference.com/complete-list-of-applescript-key-codes Näppäinkomennot, joita kutsutaan key code numero] &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;System Events&amp;quot;&lt;br /&gt;
	key code 19 using {control down} -- ctrl + 2 vaihtaa näyttöön numero kaksi&lt;br /&gt;
end tell&lt;br /&gt;
delay 1.0 -- lisätään tarvittaessa viivettä ennen seuraavaa toimenpidettä&lt;br /&gt;
&lt;br /&gt;
* Safari-sivu sähköpostiksi &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;System Events&amp;quot;&lt;br /&gt;
	tell process &amp;quot;Safari&amp;quot;&lt;br /&gt;
		set frontmost to true&lt;br /&gt;
		click menu item &amp;quot;Email This Page&amp;quot; of menu of menu item &amp;quot;Share&amp;quot; of menu &amp;quot;File&amp;quot; of menu bar 1&lt;br /&gt;
	end tell&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tekstin muokkaaminen ==&lt;br /&gt;
Esimerkiksi muuttujassa olevasta tekstistä sen osien poistaminen tai muuttaminen tapahtuu esim. http://applescript.bratis-lover.net/library -sivulla olevien skriptien avulla kuten RemoveFromString&lt;br /&gt;
&lt;br /&gt;
== Tiedostonimen asettaminen ==&lt;br /&gt;
* Satunnaisnumeroa käyttäen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set satunnainenNumero to random number from 1 to 99999&lt;br /&gt;
set tiedostoNimi to &amp;quot;Tiedostonimi&amp;quot; &amp;amp; satunnainenNumero &amp;amp; &amp;quot;.txt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tiedostopolun asettaminen ==&lt;br /&gt;
* set tiedostoPolku to &amp;quot;~/Desktop/&amp;quot; &amp;amp; tiedostoNimi&lt;br /&gt;
* 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&lt;br /&gt;
 set tiedostoPolku to &amp;quot;KOVALEVYNNIMI Media:Users:kayttajatunnus:Desktop:tiedostonimi.txt&amp;quot;&lt;br /&gt;
* Tiedostonimen ja hakemiston valitseminen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set jokuPolku to choose file name with prompt &amp;quot;Tallenna tiedostoon:&amp;quot;&lt;br /&gt;
set jokuPolku to jokuPolku &amp;amp; &amp;quot;.txt&amp;quot; as text -- lisätään .txt ja määritellään tekstitiedostoksi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tiedoston valitseminen ponnahdusikkunassa&lt;br /&gt;
 set jokuPolku to choose file with prompt &amp;quot;Valitse tiedosto:&amp;quot; &lt;br /&gt;
* Kuvatiedoston valitseminen ponnahdusikkunassa&lt;br /&gt;
set tiedostoNimi to choose file with prompt &amp;quot;Valitse kuvatiedosto:&amp;quot; of type {&amp;quot;public.image&amp;quot;}&lt;br /&gt;
* Tiedostonimen muuttaminen muotoon: /Users/käyttäjänimi/Desktop/tiedostonimi.jpg&lt;br /&gt;
set tiedostoNimi to choose file with prompt &amp;quot;Valitse kuvatiedosto:&amp;quot; of type {&amp;quot;public.image&amp;quot;}&lt;br /&gt;
set tiedostoNimi to POSIX path of the tiedostoNimi&lt;br /&gt;
* Tiedosto-info?&lt;br /&gt;
 display dialog name of (info for &amp;quot;/Users/käyttäjänimi/Desktop/hakemisto/tiedostonimi.jpg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Tiedostojen määrä kansiossa ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Haetaan työpöydällä olevasta kansiosta tiedostojen lukumäärä&lt;br /&gt;
tell application &amp;quot;Finder&amp;quot;&lt;br /&gt;
	set tyopoyta to path to desktop folder&lt;br /&gt;
	set tiedostoKansio to folder &amp;quot;kansionnimi&amp;quot; of tyopoyta&lt;br /&gt;
	count files of tiedostoKansio&lt;br /&gt;
	set tiedostojenLkm to result&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tiedoston tallentaminen ==&lt;br /&gt;
* Komentorivikomennolla echo. &amp;gt;&amp;gt; kirjoittaa tiedoston jatkoksi ja pelkkä yksi &amp;gt; kirjoittaa uuden tiedoston. Joku muuttuja voi olla esim. teksti tai linkki. &lt;br /&gt;
 do shell script &amp;quot;echo &amp;quot; &amp;amp; jokuMuuttuja &amp;amp; &amp;quot; &amp;gt;&amp;gt; ~/Desktop/&amp;quot; &amp;amp; tiedostoNimi &amp;amp; &amp;quot;.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tiedoston lukeminen ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
on lueTiedosto()&lt;br /&gt;
	set jokuLuettelo to {}&lt;br /&gt;
	set tiedosto to choose file of type &amp;quot;txt&amp;quot; with prompt &amp;quot;Valitse tiedosto:&amp;quot;&lt;br /&gt;
	open for access tiedosto&lt;br /&gt;
	set jokuLuettelo to (read tiedosto) as text&lt;br /&gt;
	close access tiedosto&lt;br /&gt;
	-- display dialog linkkiLuetteloc&lt;br /&gt;
	return jokuLuettelo&lt;br /&gt;
end lueTiedosto&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tiedoston poistaminen ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;Finder&amp;quot;&lt;br /&gt;
	try&lt;br /&gt;
		set tyopoyta to path to desktop folder&lt;br /&gt;
		set polku to folder &amp;quot;kansionimi&amp;quot; of tyopoyta&lt;br /&gt;
		delete the file &amp;quot;tiedostonimi.txt&amp;quot; in polku&lt;br /&gt;
		delete (every item of polku whose name ends with &amp;quot;.jpg&amp;quot;)&lt;br /&gt;
		delete (every item of folder (path to desktop folder) whose name begins with &amp;quot;tiedostonimenalku&amp;quot;)&lt;br /&gt;
	on error&lt;br /&gt;
		display dialog (&amp;quot;Tiedostojen poistaminen ei onnistunut&amp;quot;) buttons {&amp;quot;Ok&amp;quot;}&lt;br /&gt;
	end try&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tiedoston lataaminen internetistä ==&lt;br /&gt;
* Nouto internetistä tietokoneen hakemistoon listan mukaan. Lista voi olla esimerkiksi käyttäjältä pyydettyjä tiedostonnimiä tai internetosoitteita. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set tiedostoPolku to &amp;quot;~/Desktop/&amp;quot;&lt;br /&gt;
repeat with i from 1 to length of jokuLista&lt;br /&gt;
	set kuvanOsoite to item i of jokuLista&lt;br /&gt;
	set hakuKomento to &amp;quot;/opt/local/bin/wget -P &amp;quot; &amp;amp; kuvanOsoite&lt;br /&gt;
	set hakuKomento to &amp;quot;/opt/local/bin/wget -P &amp;quot; &amp;amp; tiedostoPolku &amp;amp; &amp;quot;/ &amp;quot; &amp;amp; kuvanOsoite&lt;br /&gt;
	do shell script hakuKomento&lt;br /&gt;
end repeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tiedoston tunnistenumero (ID) ==&lt;br /&gt;
* Vastaus esim. com.apple.iChat&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell application &amp;quot;Finder&amp;quot;&lt;br /&gt;
	get id of application file &amp;quot;Messages&amp;quot; of folder &amp;quot;Applications&amp;quot; of startup disk&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Puhdas URL-osoite HTML-tekstistä ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
on parseHTMLTag(theHTMLTag)&lt;br /&gt;
	set AppleScript&amp;#039;s text item delimiters to &amp;quot;\&amp;quot;&amp;quot;&lt;br /&gt;
	set theHTMLTagElements to text items of theHTMLTag&lt;br /&gt;
	set AppleScript&amp;#039;s text item delimiters to &amp;quot;&amp;quot;&lt;br /&gt;
	if length of theHTMLTagElements is greater than 1 then return item 2 of theHTMLTagElements&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end parseHTMLTag&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/ParseHTML.html&lt;br /&gt;
&lt;br /&gt;
== Uusi tekstitiedosto työpöydälle == &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set tiedostoNimi to &amp;quot;tiedostonimi.txt&amp;quot;&lt;br /&gt;
set polku to (path to desktop from user domain) as string&lt;br /&gt;
set tiedosto to polku &amp;amp; tiedostoNimi&lt;br /&gt;
tell application &amp;quot;Finder&amp;quot;&lt;br /&gt;
	if not (exists file tiedosto) then&lt;br /&gt;
		make new file at folder polku with properties {name:tiedostoNimi}&lt;br /&gt;
	end if&lt;br /&gt;
end tell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tiedostonimen muuttaminen ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Asetetaan tiedostopolku&lt;br /&gt;
set polku to &amp;quot;~/Desktop&amp;quot;&lt;br /&gt;
-- Pyydetään kuvalle uusi nimi&lt;br /&gt;
set nimiKysymys to display dialog &amp;quot;Uuden tiedoston nimi?&amp;quot; default answer &amp;quot;&amp;quot; with icon note buttons {&amp;quot;Lopeta&amp;quot;, &amp;quot;Seuraava&amp;quot;} default button &amp;quot;Seuraava&amp;quot;&lt;br /&gt;
set vastaus to button returned of nimiKysymys&lt;br /&gt;
if vastaus is equal to &amp;quot;Lopeta&amp;quot; then&lt;br /&gt;
	exit repeat&lt;br /&gt;
else&lt;br /&gt;
	set uusiNimi to text returned of nimiKysymys&lt;br /&gt;
end if&lt;br /&gt;
-- Nimetään tiedosto uudestaan &lt;br /&gt;
-- set vanhaNimi to rightStringFromRight(kuvanOsoite, &amp;quot;/&amp;quot;) -- ks. rightStringFromRight -skripti tältä sivulta&lt;br /&gt;
tell application &amp;quot;System Events&amp;quot; to set name of file (polku &amp;amp; &amp;quot;/&amp;quot; &amp;amp; vanhaNimi) to (uusiNimi &amp;amp; &amp;quot;.jpg&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Toiminnan etenemisen seuraaminen ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Asetetaan seuranta&lt;br /&gt;
set kohteidenLkm to length of jokuLista&lt;br /&gt;
set progress total steps to kohteidenLkm&lt;br /&gt;
set progress completed steps to 0&lt;br /&gt;
set progress description to &amp;quot;Suoritetaan jotain...&amp;quot;&lt;br /&gt;
set progress additional description to &amp;quot;Valmistaudutaan johonkin.&amp;quot;&lt;br /&gt;
repeat with i from 1 to length of jokuLista&lt;br /&gt;
	set progress additional description to &amp;quot;Suoritetaan kohdetta &amp;quot; &amp;amp; i &amp;amp; &amp;quot; / &amp;quot; &amp;amp; kohteidenLkm&lt;br /&gt;
	toiminta tähän&lt;br /&gt;
	set progress completed steps to i&lt;br /&gt;
end repeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Päätekomennon suorittaminen ==&lt;br /&gt;
* Komentorivin komennossa olevat sitaatit merkitään \&amp;quot; tai \\\&amp;quot;. Tarpeen vaatiessa määritetään komennon tiedostopolku, joka täytyy selvittää esim. locate-komennolla pääte-ohjelmassa. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set tiedostoNimi to &amp;quot;~/Desktop/tiedostonimi.txt&lt;br /&gt;
set jokuKomento to &amp;quot;/usr/local/bin/komento -a \\\&amp;quot;N%d°%.3f\\\&amp;quot; &amp;quot; &amp;amp; tiedostoNimi&lt;br /&gt;
set jokuKomento to &amp;quot;/usr/local/bin/komento -a \\\&amp;quot;N%d°%.3f\\\&amp;quot; &amp;quot; &amp;amp; tiedostoPolku &amp;amp; &amp;quot;/&amp;quot; &amp;amp; tiedostoNimi&lt;br /&gt;
do shell script jokuKomento&lt;br /&gt;
set jokuMuuttuja to result as text -- tallennetaan komennolta tuleva tieto muuttujaan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 do shell script &amp;quot;/bin/bash /Users/&amp;lt;käyttäjätunnus&amp;gt;/polku/tiedostonimi.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Pääte-ohjelma ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
osascript &amp;lt;&amp;lt;EOF&lt;br /&gt;
tell application &amp;quot;Safari&amp;quot;&lt;br /&gt;
end tell&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x ~/Desktop/tiedostonimi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Python ja AppleSpript==&lt;br /&gt;
[http://aurelio.net/articles/applescript-vs-python.html AppleScipt–Python -muunnostalulukko]&lt;br /&gt;
&lt;br /&gt;
=== Python-komennon suorittaminen Apple Scriptissä ===&lt;br /&gt;
 do shell script &amp;quot;python -c &amp;#039;print \&amp;quot;Teksti\&amp;quot;&amp;#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Python-ohjelman kutsuminen Apple Scriptissä ===&lt;br /&gt;
Seuraava skripti suorittaa työpöydällä olevan Python ohjelman.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Jostain syystä tämä ei kuitenkaan suorita kirjastojen hakuja.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set script_path to &amp;quot;$HOME/Desktop/&amp;quot;&lt;br /&gt;
do shell script &amp;quot;python &amp;quot; &amp;amp; script_path &amp;amp; &amp;quot;tiedostonimi.py&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tarvittaessa tekstikoodaus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AppleScriptin kutsuminen Pythonissa ===&lt;br /&gt;
Seuraava Python-ohjelma laittaa nukkumaan.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
os.system(&amp;quot;&amp;quot;&amp;quot;osascript -e &amp;#039;tell app &amp;quot;Finder&amp;quot; to sleep&amp;#039;&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
komento = &amp;quot;&amp;quot;&amp;quot;osascript&amp;lt;&amp;lt;END&lt;br /&gt;
komento tähän&lt;br /&gt;
usealle riville&lt;br /&gt;
end tell&lt;br /&gt;
END&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def aliohjelma():&lt;br /&gt;
     os.system(komento)&lt;br /&gt;
aliohjelma()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tämä on epäselvä: Python yhdistetään Scripting Bridge Frameworksin kanssa Apple Scriptiin.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from Foundation import *&lt;br /&gt;
from ScriptingBridge import *&lt;br /&gt;
iTunes = SBApplication.applicationWithBundleIdentifier_(&amp;quot;com.apple.iTunes&amp;quot;)&lt;br /&gt;
print iTunes.currentTrack().name()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lähteitä ==&lt;br /&gt;
: http://www.macosxautomation.com/applescript/index.html&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Tietokoneet]]&lt;/div&gt;</summary>
		<author><name>imported&gt;WikikkoSysop</name></author>
	</entry>
</feed>