このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

スクリーンキャプチャ+自動印刷をAppleScriptオンリーで

発言者:MAYA
( Date Friday, November 05, 2004 02:39:23 )


初めまして、MAYAと申します。
スクリーンキャプチャについての資料がwebでは少なく、困っています・・・
サーバー画面を一定時間ごとにキャプチャ(例えば1分)し、自動印刷という処理をAppleScriptのみでやりたいのですが、各パーツパーツは分かっても、全体をどう組み立てたらいいのか悩んでいます。

なお、使用OSは9.2.1です。


1.表示された画面を一定時間ごとにスクリーンキャプチャで撮る(Shift+Command +3で)
2.それをプリンタで印刷(Finder)

という処理を自動化したいのですが、

1は
TypeText"3"withShiftandCommand 
2は印刷するためにprintコマンドを使えばいいということは分かるのですが・・・

ド初心者でごめんなさい。どなたか御教授頂けると幸いです・・・

田中求之 さんからのコメント
( Friday, November 05, 2004 12:03:51 )

印刷の部分が面倒になるでしょうね。というのも、実際にソフトで印刷する
場合のことを考えてもらえばわかると思うのですが、印刷設定のダイアログ
が出てきて、設定を確認して OK をクリックしてダイアログを閉じると印刷
がはじまるわけですが、このダイアログの操作の部分を AppleScript で
コントロールするのが難しいということがあります。

どのようなソフトを使って印刷することを考えていますか?

MAYA さんからのコメント
( Friday, November 05, 2004 15:27:30 )

お返事ありがとうございます!
あ・・・書き忘れてました・・・<ソフト

今のところSimpleTextで考えています。
もっと使い勝手のいいものがあればいいんですが・・・

MAYA さんからのコメント
( Tuesday, November 09, 2004 03:38:44 )

なんとか自動でキャプチャし、ファイルオープン、印刷までのプロセスはできました。
ただ、以下の問題が派生しています・・・

■スクリプト1回目の実行時は「スクリーン 1」をプリントアウト、
2回目の実行時は「スクリーン 2」をプリントアウト、
3回目の実行時は「スクリーン 3」をプリント・・・
というふうにしたいのですが、そこが分かりません。

■印刷ダイアログの自動化
やはりここがいちばんの難関です。EPSONのプリンタドライバを使っているのですが、
ダイアログ表示まではできても、リターンキー(「印刷」ボタン)が自動で押されません。

「Keyboard Script OSAX」をスクリプティング機能追加フォルダに入れて
TypeText (ASCII character 13) 
と打ってもダメでしたし、
AutoType (ASCII character 13) 
でもダメでした。

うーん・・・ごめんなさい、つまってます・・・

MAYA さんからのコメント
( Tuesday, November 09, 2004 03:52:32 )

ちなみに今のところできている手順としては、
1.キャプチャする
2.ハードディスクにファイルができる
3.できたファイル(「スクリーン 1」)をSimpleTextで開く
4.SimpleTextで印刷する

というところまではできました。
ただ、「キャプチャしたものを順に印刷する(1回目キャプチャ実行時は「スクリーン1」
2回目キャプチャ実行時は「スクリーン2」を印刷)」と「印刷ダイアログが出たときに
自動でリターンキー(「印刷」ボタン)を押す」ということがまだできていません・・・

どなたかご存知の方、ご教授下さい・・・

のもと さんからのコメント
( Tuesday, November 09, 2004 09:58:53 )

処理し終わったキャプチャデータは名前を変えるとかすれば(たとえば [cap20041109095150.pct] など)
処理すべきファイル名は常に「スクリーン1」になります。

キー動作のシミュレーションには「Sa¨ndi's Additions」がいちばんいいと思います。

→  Sa¨ndi's Additions

木本豪 さんからのコメント
( Tuesday, November 09, 2004 11:21:00 )

「Keyboard Script OSAX」が,わたくしが知っているものと
同じだとすると,それにはキーボード入力する機能はありません.

たとえば
-- AKUA Sweets を使うとこうなります:
tell application "SimpleText" to activate
input state {keys down:"p", command key bit:true} -- プリント
input state {keys down:return} -- OK
input state {keys down:"w", command key bit:true} -- 閉じる

-- Sandi's Additions だとこうだったかな:
tell application "SimpleText" to activate
TypeText "p" with Command -- プリント...
TypeText (ASCII character 3) -- type the enter key
TypeText "w" with Command -- 閉じる

-- AutoType だとたぶんこんなかんじ:
tell application "SimpleText" to activate
autotype "p" holding "command"
autotype "`return"
autotype "w" holding "command"

気をつけることがひとつあって,tell app "SimpleText" ... end tell
のくくりのなかではモーダルダイアログの制御ができないことです.
たとえば,下記のスクリプトはダイアログが出たところで止まります.

tell application "SimpleText"
  activate
  input state {keys down:"p", command key bit:true} -- プリント
  input state {keys down:return} -- OK
  input state {keys down:"w", command key bit:true} -- 閉じる
end tell

ここのところ,詳しくは AutoType のサイトの
「Why doesn't Autotype work with my dialog box?」
の項に詳しいことが書いてあります.



→  AutoType Home Page

MAYA さんからのコメント
( Thursday, November 11, 2004 19:46:55 )

田中さま、木本豪さま、のもとさまありがとうございました!
おかげでカンペキとは言えませんが、「English Speech Recognition」と「AKUA Sweets」で
なんとか自動印刷ができました。

ただ、以下のことは残念ながら分かりませんでした。
■スクリプト1回目の実行時は「スクリーン 1」をプリントアウト、
2回目の実行時は「スクリーン 2」をプリントアウト、
3回目の実行時は「スクリーン 3」をプリント・・・
■処理し終わったキャプチャデータの名前を変える(ファイル名は自動でつける)
→ファイル名を変えるスクリプトはできたのですが、自動で名前をつけて変更ができませんでした

という問題点があり、キャプチャ→「スクリーン 1」というファイルができる→SimpleTextで
ファイルを開く→印刷→SimpleTextを終了→「スクリーン 1」をゴミ箱へ→ゴミ箱を空に

という手順で行わざるを得ませんでした。
スクリプト実行から終了まで、Macに触れないで印刷したかったので・・・
キャプチャデータが残らないという悲しさと心残りはありますが、印刷できれば
とりあえずは達成できたので、まずよかったです。


森下 さんからのコメント
( Thursday, November 11, 2004 20:56:58 )

ここを変えるだけでデータを残せます。
>「スクリーン 1」をゴミ箱へ
ゴミ箱の代わりに、保存用のフォルダを別に作って、
「スクリーン 1」を保存用フォルダへ
とすれば良いわけです。
これだけでは2度目に同じ「スクリーン 1」という名前が存在してしまいますので、
「スクリーン 1」を保存用フォルダへ
の後で、移動後のスクリーン1の名前を時間なり日時なりを入れて、
重ならないように工夫した名前に変更します。
こうすると、次にスクリーン1が移動してきたときにぶつからないので次々残せます。

なお、移動なしで名前だけ変えていってもオッケーです。
これが、のもとさんのご説明の方法ですね。