2016年2月10日水曜日

iTunesで勝手につけられるアルバムのレートを解除するスクリプト

 最近のiTunesの困った機能の一つが、アプリ側で勝手にアルバムのレート「★」をつけてしまうやつ。アルバムにレートがつくと、そのアルバムの全曲に星がつく。自分でレートをつけなかった曲には薄い星がつく。これが問題。
 星の数でスマートプレイリストを作っている場合、この薄い星のついた曲も含まれてしまうんだな。だから自分で星をつけた覚えのない曲までリストに入ってしまう。
 この不具合を解決するには手動でアルバムのレートを解除すればいいんだが、いずれまたアプリ側で勝手につけてしまう。もういたちごっこよ。止めることもできないなら、せめてスクリプトを使えば解除作業もはかどるってことで。

tell application "iTunes"
set selected_tracks to a reference to selection as list
repeat with a_track in selected_tracks
set album rating of a_track to 0
end repeat
end tell

2015年10月12日月曜日

ElCapitanでM-Audio製のFireWire機器を動かすには

 MacOSX ElCapitan。なかなかいいOSのようだが、rootlessというシステム保護機能によって、署名がない機能拡張(kext)を読み込まなくなった。これによって開発が止まった古いドライバ類が読み込めなくなり、周辺機器が使えなくなってしまうことがある。
 そんな時には以下の方法でrootlessを停止すれば、以前からインストールされていた機能拡張が読み込まれ、周辺機器も動くようになる可能性が高い。

 コマンド+Rを押して再起動し(リカバリーモード)、立ち上がった画面のメニューからターミナルを起動し、 csrutil disable と入力してまた再起動する。 

 我が家のM-Audio製のFireWire機器、FireWire1814とOzonicはこれでElCapitanでも動いた。 ただしYosemiteの時と同様、設定パネルや設定アプリは使えない。

2010年10月10日日曜日

スクリプトメニューから実行すると遅くなる件

 スクリプトをスクリプトメニューから実行するとかなり実行速度が遅くなる。ちょっとした軽いスクリプトだとわからないが、重いスクリプトを走らせると如実にわかる。
 アクティビティモニタで比較してみると、スクリプトエディタから実行するときは、数秒間CPU使用率が100%近くまで上がり、その後は25%ぐらいで推移し、十数秒で処理を終わらせる。ところが、スクリプトメニューから実行するとCPU使用率は20%ぐらいのままだらだらと推移し、3分ほどかかって処理を終わらせる。バックグラウンドで処理することを考慮してこうなっているのかもしれんが、余計なお世話よ。
 で、これを回避するのに「スクリプトを実行するスクリプト」から実行するという手がある。

run script "実行スクリプトのパス"

例 run script "/Users/username/Library/Scripts/Applications/Excel/excelsum.scpt"

でいい。10.6だとパスの書き方はaliasでもPOSIX pathでもいいみたい。

2010年9月28日火曜日

Numbers:現在表示されているシートを取得/セルの式を取得

 ExcelからiWork'09のNumbersにデータを移植する際、アップルスクリプトの互換性も気になるところ。
 作業中に行き当たったのが、Numbersでは「現在表示されているシート」を示すプロパティがないこと。Excelでいうところの「active sheet」に相当するプロパティがない。もうひとつは、セルの値ではなく「式」を示すプロパティがないこと。Excelでいうところの「formula」に相当するプロパティがない。

 「現在表示されているシート」については、もしセルを選択している状態ならば、以下の方法で現在表示されているシート(active_sheet)を取得することは可能。ただしセルを選択していないと、いずれのitemも{missing value}になってしまい、エラーとなる。

tell application "Numbers"
tell document 1
repeat with a_sheet in sheets
if selection range of tables of a_sheet is not {missing value} then set active_sheet to contents of a_sheet
end repeat
active_sheet
end tell
end tell


 「式」については、一旦セルのformatプロパティをtextに変更し、テキスト化された計算式を取得するというやり方を提案している人がアップルのフォーラムにいる。これが現状では一番簡単なやり方かな。

tell application "Numbers"
tell table 1 of sheet 1 of document 1
set a_cell to a reference to cell of selection range
set a_format to format of a_cell
set format of a_cell to text
set a_formula to value of a_cell
set format of a_cell to item 1 of a_format
a_formula
end tell
end tell


 で、これらを組み合わせて、現在選択しているセルの式を取得するアップルスクリプト。まあこれもtableがひとつというのが前提だから、そこまで突き詰めるとめんどくせー。

tell application "Numbers"
tell document 1
repeat with a_sheet in sheets
if selection range of tables of a_sheet is not {missing value} then set active_sheet to contents of a_sheet
end repeat
active_sheet
end tell
tell table 1 of active_sheet
set a_cell to a reference to cell of selection range
set a_format to format of a_cell
set format of a_cell to text
set a_formula to value of a_cell
set format of a_cell to item 1 of a_format
a_formula
end tell
end tell

2010年9月21日火曜日

アップルスクリプトのページは・・・

アップルスクリプトのページは、右側の「アップルスクリプトのページ」からどうぞ。

2010年9月20日月曜日

復活

復活。
移動先のvoxがサービス終了しちまったたので。
まあ、めったに書かないブログだが、残しておいてよかったわ。

ついでにiswebも終了とのことで、そっちのホームページをこちらにまとめようかと。