• sago

AppleScriptを使って全レイアウトのスクショを撮る

更新日:4月18日

今回はFileMakerのテストのために全レイアウトのスクリーンショットを画像として保存するAppleScript(というかシェルスクリプト)を解説します。AppleScriptなのでMac限定となります。

全画面を印刷したものを渡せば、テストの仕事が振りやすくなります。



シェルスクリプトの解説

今回の肝はAppleScriptでMacのシェルスクリプトを実行しています。下記のようなシェルスクリプトを「AppleScriptで実行」スクリプトステップで実行するとスクリーンショットをデスクトップに保存してくれます。

do shell script "screencapture -R " & 116 & "," & 25 & "," & 1060 & "," & 875& " -t jpg ~/Desktop/001_タスク一覧.jpg"

コマンドの意味を順に説明すると

-R:範囲を指定
X座標116
Y座標251060
高さ875
-t:フォーマットを指定「jpg」に
デスクトップに「001_タスク一覧.jpg」というファイル名で保存

となります。

そのパラメータをSubstitute関数で置き換えるようにするとベースとなるテキストは下記。

do shell script "screencapture -R " &X& "," &Y& "," & 【幅】 & "," & 【高さ】& " -t jpg ~/Desktop/【ファイル名】.jpg"

【】で囲んだ部分はSubstitute関数で置き換えてやります。

X】:ウインドウの左位置
【Y】:ウインドウの上位置だが、メニューを含めた位置なのでGet(ウインドウ上位置)とは異なる
【幅】:ウインドウ幅
【高さ】:ウインドウ高さ
【ファイル名】:ファイル名、レイアウト番号+レイアウト名

と置換すると

do shell script "screencapture -R " & 116 & "," & 25 & "," & 1060 & "," & 875& " -t jpg ~/Desktop/001_タスク一覧.jpg"

となるわけです。


FileMakerの解説

あとは、FileMakerの世界です。

一つ問題があるのがscreencaptureコマンドとFileMakerのウインドウ上位置が異なる点です。

FileMakerはメニューの高さを含みません。

screencaptureコマンドはメニューの高さを含みます。

このメニューの高さは Get(スクリーン高さ) - Get(ウインドウデスクトップ高さ) で求める事が出来ますので、

ウインドウ上位置は Get(ウインドウ上位置) + Get(スクリーン高さ) - Get(ウインドウデスクトップ高さ) となります。

ウインドウ系関数の位置
FileMaker 関数 ・ スクリプト ガイドより

後は、LayoutNames関数で全てのレイアウトを取得してレイアウトを移動、上記コマンドでスクリーンショットを撮っていきます。

レイアウト遷移後はスクリプト一時停止を少し入れて画面が再描画される様にしましょう。そうしないとスクリーンショットが撮れません。


完成したスクリプト

スクリプト
スクリプト

このスクリプトはレイアウトもフィールドも参照していませんので、このスクリプトをスクリーンショットを撮りたいファイルにコピペするだけで実行することが出来ます。

ただ、タブコントロールやスライドコントロール、隠す設定には対応できません。

その辺は運用等で工夫する必要があります。



まとめ

FileMaker での開発おいて、一番初歩的なテスト手法は"全てのボタンを押す"です。

全てのレイアウトを画像として書き出して、テスターに押したボタンをペンでチェックしてもらうのがお手軽だと思います。ボタンだけでなくてIMEの設定なんかもテストしてもらっても良いですね。

これで初歩的なミスはほぼ防げるのと、さほどFileMakerに詳しくなくとも実施できます。


謝辞

今回のアイデアはFM-1グランプリの仕事効率化部門準賞の「FileMaker PowerPack (Take 2) 」を参考にしています。FileMakerで使えるAppleScriptがたくさん詰まった作品なのでオススメです。更に『FileMaker PowerPack活用ガイド』という書籍も出版されています。





閲覧数:75回0件のコメント

最新記事

すべて表示