[AppleScript] スクリプト実行時に引数を指定する方法

applescript

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

スクリプトに引数を渡す

今回はスクリプト実行時に引数を渡す方法と、その引数をスクリプト内で使用する方法を紹介します。

コマンドラインから実行

AppleScript をコマンドラインから実行するには osascript というコマンドを使用します。

実行

osascript sample.scpt

引数ありで実行

osascript sample.scpt "Feel, don't think."

osascript コマンドは OSA (Open Scripting Architecture) と呼ばれる機構に対応したスクリプトを実行するためのコマンドです。
AppleScriptJavaScript が対応しています。

このコマンドを使用してスクリプトファイル名の後に引数を書くことで、そのスクリプトに引数を渡すことができます。
引数はスペース区切りで複数指定することもできます。

run script コマンドから実行

以前紹介した run script コマンド では、with parameters というパラメータを指定することで引数を渡すことができます。

run script file sample.scpt with parameters {"You were the chosen one!"}

with parameters には リスト を指定します。
カンマ区切りで複数の引数を指定することもできます。

{"arg1", "arg2", "arg3"}

スクリプト内での使用方法

スクリプト内で引数を受け取るには run ハンドラの後に リストの変数 を指定します。

on run argv
    display dialog (item 1 of argv)
end run

変数名に決まりはなさそうでしたが、C 言語にならって argv とするのが通例のようでした。
リストの要素を取得するには item n of <リスト変数> とします。
n はリストのインデックスで、先頭要素のインデックスは 1 です。

run ハンドラはスクリプト実行時に呼ばれるハンドラです。
これまでのサンプルでは run ハンドラは書いていませんでしたが、実行していたスクリプトは暗黙的に run ハンドラ内で呼び出されています。

また、以下のようにリストの要素数を調べることで、引数ありで実行されたかどうかを判断することができます。

on run argv
    if (count of argv) > 0 then
        -- 引数ありの場合の処理
    else
        -- 引数なしの場合の処理
    end if
end run

まとめ

  • コマンドラインから実行の場合は osascript を使う
    • 引数はスペース区切り
  • run script コマンドから実行の場合は with parameters を使う
    • 引数はリスト
  • スクリプト内で引数を使用する場合は run ハンドラ の引数(リスト変数)を使う

リンク

ミレニアム・ファルコン製作日記 #21

21 号 表紙

mfd_21_1

パーツ

mfd_21_2

mfd_21_3

mfd_21_4

成果

mfd_21_5

今回の作業は以下の 1 つでした。

  • クッションパッドを接着する

前回、前々回に作成した通路の側面にクッションパッドを取り付けました。
8 つのパッドを接着しただけなので作業ボリュームはかなり少なめ。
ここ最近の軽めの作業は何かの前兆でしょうか?
外殻フレーム&プレートを組み立てたいなー

それではまた次回。

May the Force be with you!