bgpict2.png 
わかばマークのMacの備忘録
初心者による Mac OSX の便利な使い方や、ソフトウェアの紹介など、Macのこといろいろ。

2016 / 12

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 



http://wakabamac.blog95.fc2.com/?overture" target="_new

スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

edit

スポンサー広告 | |
+


http://wakabamac.blog95.fc2.com/blog-entry-994.html

Task3 / タスクの設定例(4)
icn_Task3.jpg
Task3 : あらゆるタスクを自動化する
Growl対応
OS10.4.11以上(UB)
シェアウェア ¥1,500(銀行振込)、¥1,700(PayPal)


Task3 / タスクの設定例(3)』のつづき

Task3 / タスクの設定例(4)
(各項目へジャンプします)




t3_itunes_scripts

ホットキーで iTunes を操作したら便利そうな AppleScript


Task3 はホットキーを設定してアクションを実行できるのですが、ホットキーで iTunes を操作できたら便利だろうということで、それ用の AppleScript を書いてみました。

それぞれの AppleScript を Task3 の「アクション」に設定して、トリガーでホットキーを設定して使います。


再生・一時停止
tell application "iTunes"
if player state is playing then
pause
else
play
end if
end tell

iTunes が起動していないときでも、このスクリプトを実行すると、iTunes が起動して再生し始めます。


次のトラックを再生
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes" to play (next track)
end if
(iTunes が起動していないときは、動作しない)



停止
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes" to stop
end if
(iTunes が起動していないときは、動作しない)



ボリュームUP
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes"
set soundVol to sound volume
if soundVol > 90 then
set sound volume to 100
else
set sound volume to soundVol + 10
end if
end tell
end if
(iTunes が起動していないときは、動作しない)



ボリュームDOWN

ソースは略(iTunes が起動していないときは、動作しない)



ミュートのON/OFF切り替え
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes"
if mute is false then
set mute to true
else
set mute to false
end if
end tell
end if
(iTunes が起動していないときは、動作しない)



現在の曲情報を Growl で表示
set rt to return as text
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes"
if class of current track is not URL track then
try
tell current track
set theTrack to name
set theArtist to artist
set theAlbum to "[ " & album & " ]"
set numRating to rating
set theRating to "―――――"
if numRating < 5 then set theRating to "・・・・・"
if numRating ≥ 5 and numRating < 15 then set theRating to・・・・"
if numRating ≥ 15 and numRating < 25 then set theRating to "★・・・・"
if numRating ≥ 25 and numRating < 35 then set theRating to "½・・・"
if numRating ≥ 35 and numRating < 45 then set theRating to "★★・・・"
if numRating ≥ 45 and numRating < 55 then set theRating to "★★½・・"
if numRating ≥ 55 and numRating < 65 then set theRating to "★★★・・"
if numRating ≥ 65 and numRating < 75 then set theRating to "★★★½"
if numRating ≥ 75 and numRating < 85 then set theRating to "★★★★・"
if numRating ≥ 85 and numRating < 95 then set theRating to "★★★★½"
if numRating ≥ 95 then set theRating to "★★★★★"
end tell
end try
else if class of current track is URL track then
set theTrack to current stream title
set theArtist to comment of current track
set theAlbum to "[ " & name of current track & " ]"
set theRating to ""
end if

if exists artworks of current track then
set theArtwork to data of artwork 1 of current track
try
tell application "GrowlHelperApp" to notify with name "Task3MessageWorkNotification" title (theTrack as Unicode text) description ((theArtist & rt & theAlbum & rt & theRating) as Unicode text) application name "task3runner" pictImage theArtwork --sticky "yes"
end try
else
try
tell application "GrowlHelperApp" to notify with name "Task3MessageWorkNotification" title (theTrack as Unicode text) description ((theArtist & rt & theAlbum & rt & theRating) as Unicode text) application name "task3runner" icon of application "iTunes" --sticky "yes"
end try
end if
end tell
end if
(iTunes が起動していないときは、動作しない)

現在再生中の曲情報を Growl で表示します。
090916tsk81.jpg

ただし、Growl でアートワークを表示させているせいか?やけに「GrowlHelperApp」への負荷が掛かってしまう。
それと、このスクリプトを AppleScript Editor で試しに実行すると、AppleScript Editor が強制的に終了してしまうので注意。(どこに問題があるのかよくわからない)



現在の曲のレートを★1/2ずつUP

ソースは略(iTunes が起動していないときは、動作しない)

現在再生中の曲のレートを★1/2UPします。
そして Growl でその曲情報を表示します。



現在の曲のレートを★1/2ずつDOWN

ソースは略(iTunes が起動していないときは、動作しない)

現在再生中の曲のレートを★1/2DOWNします。
そして Growl でその曲情報を表示します。



別にホットキーに設定しなくても、Task3メニューから使えば、メニューバーにある iTunes コントローラ として使えます。
090916tsk82.gif

これら上記の AppleScript を保存したものをアップロードしたので、欲しい人はどうぞ。
iTunes_Scripts_for_Task3

AppleScript Editor で開いて、ソースを Task3 にコピペして使って下さい。
この中の「♫ Show Info.scpt」「★↑ Increase Rating.scpt」「★↓ Decrease Rating.scpt」の3つは AppleScript Editor で実行すると、AppleScript Editor が終了してしまうので注意。





t3_login_items

曜日ごとにログインアイテムを変更する


Task3 を使えば、曜日ごとに「ログインアイテム」を変更して、日によって違うアプリケーションを起動させることができます。

(トリガー)
リストから「コンピュータの起動/終了」を選択、コンピュータの起動時に実行するように設定します。
090916tsk83.gif


(アクション)
ファイル/アプリケーションを開く」で、ログイン時に起動させたいアプリケーションを選択して登録します。
※ここで登録したアプリケーションは、重複しないように
システム環境設定アカウントログイン項目
で登録しないようにしておきます。


(実行条件)
リストから「日時を制限」を選択して、曜日を選択していきます。
090916tsk84.gif

これでタスクを有効にして保存すると、月曜~金曜までの「ログイン項目」を設定できます。
また新規タスクを作成して、ここで指定した別の曜日にも、同じように起動するファイル・アプリケーションを設定すると、曜日ごとに違った「ログイン項目」になります。




他にも日にちを指定して、その日ごとに違うアプリケーションを「ログイン項目」に設定したい場合は、「実行条件」にAppleScript を設定することによって可能です。

例えば、月末だけ起動するように設定する場合、「実行条件」に下のような AppleScript を設定します。
090916tsk85.gif
set endOfMonthList to {"0131", "0228", "0229", "0331", "0430", "0531", "0630", "0731", "0831", "0930", "1031", "1130", "1231"}
set theToday to do shell script "date '+%m%d'"
return (endOfMonthList contains theToday)
(月末以外の他の日付を設定したい場合には、1行目の {} 内に "1201" とか日付の数字を入れて下さい)
これで「アクション」でアプリケーションを起動するようにすれば、それは月末だけの「ログイン項目」になります。





t3_virus_scan

ClamXav で定期的にウイルススキャン


ClamXavでウイルススキャンするときに、Task3 を併用すれば夜中にMacを起動(スリープ復帰)して、ウイルススキャン、終わったらシステム終了(スリープさせる)といった使い方ができます。

まず ClamXav の環境設定で「スケジュール」を設定します。
090916tsk86.gif
(↑ClamXav の環境設定のウインドウの画像です)
僕の場合は「ウイルス定義の更新」を毎週土曜日AM3:15、「スキャン」を毎週土曜日AM3:20 に実行するように設定しています。

CalmXav のスケジュール設定では、その時間にMacが起動している状態でないと機能しないので、Task3 で土曜日AM3:15よりも前に Mac を起動させるように、下のように設定しておきます。

(トリガー)
スケジュール」をリストから選択して、毎週土曜日AM3:10 に設定します。
090916tsk87.gif


(アクション)
コンピュータを起動/終了」をリストから選択して、コンピュータを 起動/復帰 と設定します。
090916tsk88.gif

このタスクを保存するときには、普通に保存するだけではスケジュール通りにMacの起動/復帰ができないので、「保存して起動日時を予約」( shift+command+S )します(パスワード入力が必要)。

設定できたら「起動予約を確認」で起動復帰のスケジュールを確認できます。



別にこれだけの設定でも、Mac が自動的に起動/スリープ復帰して、ClamXav でウイルススキャンできるのですが、この時間を利用してメンテナンスや、スキャンが終わった後にシステム環境設定の「省エネルギー」設定でのスリープを円滑にさせるように、Task3 で設定しておきます。

先ほどの「アクション」に実行する項目を追加していきます。
090916tsk89.gif

まずスリープを妨げるアプリケーション「Caffeine」をOFFにするようにAppleScriptを実行します。
tell application "Caffeine" to turn off

また、別のアクション項目を追加して Twitterクライアントの「夜フクロウ」を終了させるようにします。

他にも、何か自動的に動くアプリケーションなどを終了させたり、ネットワーク上のファイル共有でマウントしているサーバーをアンマウントしたり Task3 のアクション項目に追加しておきます。

これで、「省エネルギー」パネルで設定したスリープを妨げることなく、ウイルススキャンが完了するとスリープするようになります。


ついでに、この時間を利用してメンテナンスするように、アクション項目を追加しておきます。
メニューバーから各種メンテナンスをする』参照



念を入れて、もう一つ別のタスクを作成してスリープさせるようにも設定しておきます。
(何らかの予期しない理由で「省エネルギー」設定でのスリープができない状態になったときのため)

ウイルススキャンが終わる時間をだいたい見計らって、それに余裕を持たせた時間帯にスリープするように設定しておくといいでしょう。僕の場合はAM5:30に設定しています。

このときに、このタスクの「実行条件」で「日時を制限」しておいた方がいいです。
090916tsk90.gif

というのは、Task3 のタスクでスリープさせる前に、「省エネルギー」設定でのスリープが先に実行された場合、Task3 のタスクが持ち越されて次の日に使用するときにタスクが実行され、いきなりスリープしたみたいになってしまうからです。




こんな感じで、土曜日AM3:00頃に自動でウイルススキャン+もろもろを実行するように設定できました。

ただ、ClamXav のスケジュール設定は「1セット」のみしか設定できないので、例えば月曜日には別ボリューム内をスキャン、水曜日にはまた別のボリューム内をスキャンとか、そういった使い方ができません。

そこで Task3 で、ClamXav のエンジン「clamav」を実行させるようにして、複数のウイルススキャンのパターンのセットを作成して実行します。

Task3 で新規タスクを作成して、トリガーは自分の好きな日時を設定し、アクションで「コンピュータの起動/復帰」を設定します。さらにアクション項目を追加して、下のような AppleScript を実行するようにします。
property targetDirectoryList : {"対象フォルダのパス1", "対象フォルダのパス2", "対象フォルダのパス3"}
-- 上の行の{}内にスキャン対象にするフォルダのパスを""で囲って入力して下さい
-- 複数のフォルダを指定するときは「,」で区切って複数のパスを指定できます
-- {"/Applications","/Users","~/Desktop","~/Pictures"}

-- ウイルス定義の更新
do shell script "/usr/local/clamXav/bin/freshclam --quiet --log=/usr/local/clamXav/share/clamav/freshclam.log; open /usr/local/clamXav/share/clamav/freshclam.log"

set homePath to POSIX path of (path to home folder)
set stringOfPaths to ""
repeat with eachItem in targetDirectoryList
if eachItem contains "~" then
set eachPath to (do shell script "echo " & eachItem & " | sed -e 's/~//g'")
else
set eachPath to eachItem
end if
set stringOfPaths to stringOfPaths & space & (quoted form of eachPath)
end repeat

-- ウイルススキャン
tell application "Terminal"
activate
do script ("/usr/local/clamXav/bin/clamscan -r" & stringOfPaths & " --log=" & homePath & "Library/Logs/clamXav-scan.log ; open ~/Library/Logs/clamXav-scan.log")
end tell
※ 最初の行の {} 内にスキャン対象にするフォルダのパスを "" で囲って入力して下さい

このアクションを含むタスクをいくつか作成して、それにスケジュールトリガーを組み合わせれば、毎週の曜日ごとに違うボリュームなどのフォルダをスキャンしていくとかの、使用が可能になります。

(ターミナル上でコマンドを実行しているのは、ログを書き出すようにしていても、スキャン結果のサマリーがちゃんと表示されないことが多いので、ターミナル上で実行しています。)





t3_applescript

タスクを AppleScript で実行する


Task3 はAppleScript に対応しており、登録したタスクをそれぞれで実行できます。

AppleScript Editor で下のようなスクリプトを作成して実行します。
tell application "task3runner"
run task name "タスクのタイトル"
end tell
のコマンドで実行できます(「実行条件」を評価する)。


タスクの「実行条件」を無視して実行したい場合は
tell application "task3runner"
force run task name "タスクのタイトル"
end tell
とします。



これを使えば、Task3 以外のアプリケーション、例えばマウスジェスチャで AppleScript を実行できるものなどで、Task3 のタスクを実行できるようになります。





t3_task_applescript

タスクのアクションで実行する AppleScript について


僕は AppleScript がちょっとは分かる「なんちゃってAppleScripter」なので、Task3 のタスクのアクションで多く AppleScript を実行させています。

いろいろ Task3 で実行させる AppleScript で気付いたことをちょっと採り上げると・・・

例えば、Task3 で「メッセージ表示」での Growl 表示は、タスクに登録した文章でないと表示できません。
AppleScript で Growl 表示させるようにすると、AppleScript内で取得した数値や文字列など表示できるようになります。
set aTitle to "タイトル"
set aDescription to "文章内容"
set anIconOfApp to "task3runner" -- アイコンとして使うアプリケーション名 (例)"iTunes"
set aSticky to "no" -- "yes" or "no""yes" だとクリックするまで Growl のウインドウが表示され続ける
set aPriority to 0 -- 優先度。-2 から 2 まで。0 が標準。

tell application "GrowlHelperApp"
notify with name "Task3MessageWorkNotification" title (aTitle as Unicode text) description (aDescription as Unicode text) application name "task3runner" icon of application anIconOfApp sticky aSticky priority aPriority
end tell
このスクリプトを実行すると、こんな風に Growl で表示されます。
090916tsk91.jpg


例えば・・・
set aTitle to "Today"
set aDescription to current date
set anIconOfApp to "iCal"
set aSticky to "no"
set aPriority to 0

tell application "GrowlHelperApp"
notify with name "Task3MessageWorkNotification" title (aTitle as Unicode text) description (aDescription as Unicode text) application name "task3runner" icon of application anIconOfApp sticky aSticky priority aPriority
end tell
とすると、下のように現在日時を Growl で表示します。
090916tsk92.jpg



他にも、Task3 で「シェルスクリプトを実行」させる場合、sudo を付けてコマンドを実行することはできません。

そこで AppleScript でターミナル上でコマンドを実行するようにします。
tell application "Terminal"
activate
do script "sudo hoge"
end tell
こうすると、ターミナルが起動してパスワード入力を求められるので、入力して実行という具合になります。



また、パスワード入力せずにコマンドを実行したい場合は、ちょっと荒技で実行できます。
do shell script "sudo hoge" user name "管理者ユーザの登録アカウント名" password "そのパスワード" with administrator privileges
(ターミナル上ではなく、コマンドを実行します)




あと、Task3 のタスクの AppleScript では display dialogdisplay alert が実行できません。

これらを含むスクリプトを実行したいときは、AppleScript を「アプリケーション形式」に保存して、Task3 でそのアプリケーションを実行する形にします。






Task3 はまだまだバージョンアップして、機能が増えていくと思うので、
そのときはまた『Task3 / タスクの設定例(5)』を書くかも?







この記事では Task3 version 1.1.0 を使用しています。

(ダウンロードリンク)
Site top page : Spread Your Wings
Download page : Task3



(関連記事)
Task3 --- 基本的な「タスク」の設定のやり方など

Task3 / タスクの設定例(1)
Task3 / タスクの設定例(2)
Task3 / タスクの設定例(3)
Task3 / タスクの設定例(4)

edit

Utility | CM:0 | TB:0

tag : Task3 

+



管理者にだけ表示を許可する
 

trackback URL

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。