Archive for 12月, 2008

2008/12/30 テキストエディットで選択中のテキストを取得する

テキストエディットはOS標準搭載のエディタにしてはよく出来たエディタですが、いくつかの基本的な機能が欠落しています。それが、ドキュメント上の選択内容(selection)を取得する機能であり、Scriptableなアプリケーションが当然のように備えていることを期待されるものです。
(more…)

2008/12/28 PDFpenでマルチページTIFFをページごとに分解する

MVPenテクノロジーズのデジタルペン、「MVPen」のMac版を入手したところ、出力されるデータが「マルチページTIFF」などという、存在自体は知っていたものの直接見たことなどなかったシロモノで、(Preview.appでオープンできるものの)取扱いが少々めんどくさい形式でした。
(more…)

2008/12/27 モニターの数を数えるv1

USのAppleScript StudioのMLで、「接続されているモニタ(ディスプレイ)の数を調べる方法について教えてほしい」という投稿があったので、5パターンぐらい提案したのですが、その中に入っていない例がよその人から提示され、AppleScript Studio環境で使うのでなければ割といい方法だったので、サブルーチンにまとめておきました。
(more…)

2008/12/27 MindManagerで、選択中のトピックに境界線をつける

Mindjet MindManagerで、選択中のトピックに対して境界線を付加するAppleScriptです。もちろん、選択中のトピックなどというヌルい用途のために作成したのではなく、指定のトピックに対して自由に境界線を付加するAppleScriptを作成するための試作品です。
(more…)

2008/12/27 ファイル名から拡張子を外す

非常に「よくある処理」の、ファイル名のテキストから拡張子を外すというサブルーチンです。
(more…)

2008/12/27 POSIX pathからクォート記号を除去する(unquote)

POSIX pathについてはquoted form ofでシングルクォート囲み状態にしておくのは「AppleScriptの定石」ともいえる処理ですが、ごくまれにこれを理解していないエンジニアが作ったプログラム(AdobeのAcrobat Distilerとか)も存在します。

たまたま、クォート処理ずみのPOSIX pathをFile Aliasに変換するという強引な処理を書こうとして、クォートしていないPOSIX pathについてはFile Aliasに変換できたものの、クォートずみのPOSIX pathは変換できないという現象に直面しました。このぐらいはできてもいいような気がするのですが……その場で(ありあわせのルーチンを使い回しして)瞬間的に作ったのがこのAppleScriptです。
(more…)

2008/12/27 クリップボードに入っているURLのファイルをダウンロード

URLをなにかのアプリケーション(Webブラウザとか)からコピーし、URLがクリップボードに入った状態で実行すると、指定の場所にURLの内容(ファイル)をダウンロードするAppleScriptです。

# Mac OS X 10.7では、URL Access Scriptingが廃止になったので、本Scriptはそのままでは動きません
(more…)

2008/12/27 単純ダウンロード

指定のURLからファイルをダウンロードするサンプルです。

# Mac OS X 10.7では、URL Access Scriptingが廃止になったので、本Scriptはそのままでは動きません
(more…)

2008/12/27 与えられたURLからファイル名を取り出す

URLのテキストから、ファイル名の部分を抽出するサブルーチンです。
(more…)

2008/12/22 パスワード付きZipアーカイブを作成・展開 v1

Mac OS Xのzipコマンドにはパスワード付きアーカイブを扱う機能が用意されていますが、GUIからそれを利用できるようにはなっていません。たいへん不思議なことです。そこで、それを行うAppleScriptのドロップレットを作成してみました。
(more…)

2008/12/20 特定の文字ではじまるリスト要素を削除して返す

改行によって区切られたテキストのうち、コメント行や改行のみの行を除外するために作成したサブルーチンです。AppleScript Studioのプロジェクトで、text viewに各種データを記入してもらうようにしておいて、その中にコメントを記入できるようにすることを意図したものです。
(more…)

2008/12/20 指定フォルダにある特定の書類種別(複数)のファイルのリストを取得。エイリアスで

特定フォルダに存在するファイルのうち、ファイルのkind(書類種別)を複数指定し、それに該当するファイルをエイリアスのリストとして取得する記述例です。
(more…)

2008/12/20 MindManagerで、ルートトピック以外のトピックをすべて取得

Mindjet MindManagerで、ルートトピック(中央のトピック)「以外」をすべて取得するというサンプルです。
(more…)

2008/12/20 指定フォルダにある特定のラベル(複数)のファイルのリストを取得。エイリアスで

よくあるファイル処理で……特定フォルダに存在しているファイルのうち、指定の複数のラベルがついたものを、エイリアスのリストで取得するというものです。
(more…)

2008/12/19 Mindjet MindManagerでtitleが指定文字のトピックに指定色をつける

MindJet MindManagerで、指定した文字のトピックに指定の色をつけます。
(more…)

2008/12/18 度数分布のテキスト出力

{値,数値}を一組としたリストから、度数分布のテキストを生成する処理です。割とありがちですが、2度も3度も作るのは面倒なので、再利用しやすいようにしておきました。
(more…)

2008/12/18 指定フォルダにあるテキストとzipアーカイブのリストを取得。エイリアスで v2

最終的に、指定フォルダ内の指定拡張子のファイルをすべてエイリアスリストで取得するというプログラムは、ここまで短くなりました。記述が簡潔になって、非常に分りやすくなりました。
(more…)

2008/12/18 指定フォルダにあるテキストとzipアーカイブのリストを取得。エイリアスで v1

最初のブレークスルーは、Finder上で属性を指定して取得するとき、条件をリストで書いて「is in」で条件に合うものを抽出できることに気付いたことです。v0とv1の間に、v0.5ともいうべきテキストとZipファイルを別々に求めるような処理を書いていたのですが、すぐに改良してv1になりました。
(more…)

2008/12/18 指定フォルダにあるテキストとZipアーカイブのリストを取得。エイリアスで v0

指定のフォルダ中にあるテキストファイルとZipアーカイブのリストを取得したい、というよくある処理です。
(more…)

2008/12/14 texteditのattribute runから取得したテキストのリストから、縦書きテキストか横書きテキストかを判別する

縦書きが行えないアプリケーション上のテキストデータをテキストエディットにコピーして、内容を解析して元データが擬似的な縦書き(1文字ごとに改行)か、通常の横書きテキストかを判定するためのサブルーチンです。
(more…)

2008/12/14 International Settingsの言語で第一優先になっているものを取得

システム環境設定の「言語環境」(International Settings)の「言語」で第一優先になっているものを取得します。
(more…)

2008/12/14 Excel v.2008でウィンドウ枠の分割を固定

Excel v.2004/2008でアクティブワークシートのウィンドウ枠の分割を固定します。
(more…)

2008/12/14 Excel v.Xでウィンドウ枠の分割を固定

Excelで最もよく行う操作のひとつ、「ウィンドウ枠の固定」をExcel v.Xに対して行うAppleScriptです。分割位置を縦と横に対して指定し、メニューからコマンドを実行する必要があるわけですが、AppleScriptからは割と簡単に指定・実行が行えます。

xlvx1.jpeg

xlvx2.jpeg

xlvx3.jpeg

スクリプト名:Excel v.Xでウィンドウ枠の分割を固定
tell application "Microsoft Excel"
  tell Window 1
    set fStat to FreezePanes
    
if fStat = false then
      set SplitColumn to 1 水平分割位置=1列
      
set SplitRow to 1  垂直分割位置=1行
      
set FreezePanes to true
    end if
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/12/14 Excel v.Xで最前面のウィンドウを最大化する

Excel v.Xで最前面のウィンドウの表示を最大化、つまり画面一杯に表示します。

スクリプト名:Excel v.Xで最前面のウィンドウを最大化する
tell applicationMicrosoft Excel
  set aWin to ActiveWindow
  
  
tell aWin
    set WindowState to xlMaximized
  end tell
end tell

▼新規書類に  ▼カーソル位置に  ▼ドキュメント末尾に

2008/12/14 Excel v.2004/2008でウィンドウの最大化

Excel v.2004/2008で表示中のワークシート(ウィンドウ)を最大化します。画面いっぱいにウィンドウを表示します。
(more…)

2008/12/11 ScriptDebugger 4.5で最前面のドキュメントからソースコードを取得

バージョン4.0でScriptableでなくなって魅力が半減した感のあったScript Debuggerでしたが、バージョン4.5になってScriptable機能が復活。バージョン4.0.x+Mac OS X 10.4.x+Intel Mac+日本語環境では散々苦しめられましたが、バージョン4.5で心機一転(AppleがOSに作ったバグに負けずに)頑張ってほしいものです。

さっそく、「よくある処理」であるオープン中のAppleScriptのソースを取得する処理を試してみました。選択中のテキストを取得し、オープン中のAppleScriptテキストに追加できるようにひととおり確認すれば、「AppleScriptによるAppleScriptの自動書き換え」といった、目下Apple純正のScript Editorで実現しているレベルの処理ができることになります。

Apple純正のScript Editorの機能がかなりアップしているので、正直なところScript Debuggerにはもうちょっと頑張ってほしいところです。4.0のβリリース時にさんざん文句リクエストを出したので、AppleScript中の日本語文字の扱いは問題がないようです(AppleがOSレベルで組み込んだ「カタカナとひらがなを区別できない」というバグはどうにもなりませんが……)。

sd451.jpeg

スクリプト名:ScriptDebugger 4.5で最前面のドキュメントからソースコードを取得
tell application Script Debugger 4.5
  tell document 1
    set a to script source
  end tell
end tell

>
(*
“–set aText to \”2008/11\”
set aText to \”10\”
set bText to retYYYYMDD(aText) of me

on retYYYYMDD(aText)
  if aText contains \”/\” then
    set bText to aText & \”/1\”
  else
    set thisYear to (year of (current date)) as string
    set bText to thisYear & \”/\” & aText & \”/1\”
  end if
  return bText
end retYYYYMDD”
*)

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/12/11 OmniPlanで最前面のウィンドウで選択されているリソースの情報を取得する

OmniPlanの最前面のウィンドウで選択されているリソースの情報を取得します。

op5.jpeg

スクリプト名:OmniPlanで最前面のウィンドウで選択されているリソースの情報を取得する
【コメント】 
tell application "OmniPlan"
  tell window 1
    set aSel to selected resources
  end tell
end tell
> {resource id 15 of project of document id "948E3142-A45D-4B45-B9DB-C4CFE4F7475B" of application "OmniPlan"}

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/12/11 OmniPlanで最前面のウィンドウで選択されているタスクの情報を取得する

OmniPlanで、最前面のウィンドウ上で選択中のタスクの情報を取得するサンプルです。選択中のタスクを特定して、情報を取得し……他のアプリケーション上のデータを検索したり、データを個別に書き出したりするといった処理への展開が考えられます。

複数のタスクを選択することが許容されているのと、何も選択されていない場合には空のリストが返ってくるので、その点を考慮して処理を行う必要があります。

op4.jpeg

スクリプト名:OmniPlanで最前面のウィンドウで選択されているタスクの情報を取得する
【コメント】 
tell application OmniPlan
  tell window 1
    set aSel to selected tasks
  end tell
end tell
> {task id 17 of project of document id “B9CB236B-0E26-4054-83E3-77B0BF13AD1D” of application “OmniPlan”, task id 7 of project of document id “B9CB236B-0E26-4054-83E3-77B0BF13AD1D” of application “OmniPlan”}

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/12/11 OmniPlanでTaskの情報を取得する

OmniPlanで、指定のTaskの情報を取得するサンプルです。どのような情報が返ってくるかを確認できます。

op3.jpeg

スクリプト名:OmniPlanでTaskの情報を取得する
【コメント】 
tell application "OmniPlan"
  tell document 1
    set tCount to count every task
    
tell task 1
      properties
    end tell
  end tell
end tell

> {task status:past due, duration:2.025E+5, effort:1.125E+5, completed:0.161119997501, starting date:date "2006年 8月 15日 火曜日 8:00:00 AM", recalculates effort:false, completed effort:1.8126E+4, priority:0, custom data:{}, remaining effort:9.4374E+4, total cost:0.0, parent task:missing value, outline depth:1, starting baseline variance:0.0, recalculates duration:true, expanded:true, note expanded:false, filtered:false, note:"", name:"放送局用資料", outline number:"1", starting baseline date:missing value, reserve time:0.0, starting date locked:false, id:6, ending baseline variance:0.0, ending date:date "2006年 8月 24日 木曜日 4:00:00 PM", task type:group task, static cost:0.0, reserving time:false, starting constraint date:missing value, style:style of task id 6 of project of document id "B9CB236B-0E26-4054-83E3-77B0BF13AD1D" of application "OmniPlan", critical:false, resource cost:0.0, class:child task, ending date locked:false, ending baseline date:missing value, ending constraint date:missing value}

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/12/11 Excel 2004/2008で新規ドキュメントを作成して任意のワークシートを作成

Excel v.2004/2008で新規ドキュメント(ワークブック)を作成し、そこにA〜Eの指定名称のワークシートを作成するAppleScriptです。
(more…)