Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
26
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AppleScriptが便利そうなので色々メモしてみる

Last updated at Posted at 2014-04-11

##準備

Macには標準で AppleScriptエディタ が付属しているので、それを使います。

##所感

実際に触れてみて、とても自然言語に近いスクリプトだなーという印象を持ちました。
知らずに見たら普通に英文にしか見えません。

例えば、ファイルアクセス。

-- ファイルへの書き込み
set filePath to "Macintosh HD:Users:username:anyFile.txt"
set fp to open for access file filePath with write permisson
try
	write "This is a sample text." to fp
on error msg number n
	close access fp
	error msg number n
end try
close access fp

インデントあたりがプログラム感を出してますが、それ以外は普通に英文です。

##スクリプトを書く

###変数

変数は特に宣言をせず、いきなり代入できます。

-- 文字列 "hoge" を変数 VAL_NAME に代入
set VAL_NAME to "hoge"

###ハンドラ(サブルーチン)

AppleScriptではサブルーチンのことをハンドラと呼ぶようです。
なのでonで定義します。

on sayHello()
	-- 画面にダイアログを表示
	display dialog "Hello!"
end

###コメント

1行コメントは--、ブロックコメントは(* *)を使います。

-- ここは1行コメント
set one to 1

(*
ここは
ブロック
コメント
*)
set two to 2

###スクリプトオブジェクト

AppleScriptはプロトタイプベースのオブジェクト指向言語のようです。なのでオブジェクトを定義できます。

script Animal
	property age : 0
	property name : "anyName"

	-- 通常のメソッド
	on say()
		display dialog "My name is " & name
	end say

	-- 引数付きメソッド
	on cry(word)
		display dialog "Cry " & word
	end cry

	-- ラベル式引数
	to hello to val
		display dialog "Hello " & val
	end hello
end script

-- 実行
tell Animal to say              -- => "My name is anyName"
tell Animal to cry("wow")       -- => "Cry wow"
tell Animal to hello to "World" -- => "Hello World"

##アプリにメッセージを送る

スクリプトオブジェクトの実行を見てもらうとtellを使っているように、オブジェクトに対してメッセージを送る、というのが使うイメージです。
なので、なにがしかのアプリに対して処理をする場合も、アプリ名を名指ししてメッセージを送る、というイメージで実装します。

tell application "iTunes" to play the playlist named "トップ 25"
26
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?