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も終了とのことで、そっちのホームページをこちらにまとめようかと。