チュートリアル
Shotomatic Team
読了まで約12分

MacのAutomatorでスクリーンショットを繰り返し撮る方法

Automatorの「Take Screenshot」と「Loop」でスクリーンショット用ワークフローを作り、連番で整理できるファイルが必要な場合はシェルアクションを使う方法を解説します。

AutomatorアプリのアイコンとTake Screenshot、Loopアクション

この記事では、Automatorでスクリーンショットを繰り返し撮るワークフローを作ります。Take ScreenshotLoopを追加して動作を試し、順番どおりに並ぶファイルが必要な場合はRun Shell Scriptを使い、最後にワークフローをアプリとして保存します。

開示事項: 私たちはShotomaticを開発しています。この記事では、まずAutomator標準のスクリーンショット用アクションを使い、その制約を確認してから別のアプリと比較します。

Automatorの画面収録アクセスを確認する

このワークフローには、Automatorの画面収録アクセスが必要です。システム設定 > プライバシーとセキュリティ > 画面収録とシステムオーディオを開き、Automatorが一覧にあれば有効にします。最初のテストで許可を求められた場合は承認し、macOSの案内に従ってAutomatorを開き直してください。

Take Screenshotまたはscreencaptureだけを使う場合、アクセシビリティ権限は不要です。キー入力を送ったり別のアプリを操作したりする場合にだけ必要になります。

標準アクションかシェルアクションかを選ぶ

アクションを追加する前に、どちらの方法にするか決めます。標準アクションは画面上で設定でき、シェルを使う方法は各回を個別のファイルに保存でき、固定座標にも対応します。

やりたいこと適したAutomatorの方法
画面上でワークフローを学ぶTake Screenshot + Loop
タイマー付きの全画面または対話式キャプチャを選ぶTake Screenshot
各回を個別ファイルに保存するRun Shell Script + Loop
固定した範囲を撮る-R付きのRun Shell Script
連番または正確なフレーム数を使うコマンドラインのシェルループ
おおまかな時間で停止するLoopアクション

方法1:Take ScreenshotとLoopを使う

ワークフローを作成する

  1. Automatorを開きます。
  2. テスト中はWorkflowを選びます。
Workflowを選択したAutomatorの書類選択画面
最初のテストではWorkflowを選びます。Automator内で実行されるため、アプリとして保存する前にアクションを変更できます。

Take Screenshotアクションを探す

  1. アクションライブラリでTake Screenshotを検索します。
  2. 検索結果をダブルクリックするか、ワークフロー領域へドラッグします。
Take Screenshotアクションで絞り込んだAutomatorのアクションライブラリ
アクションライブラリを検索すると、ワークフローに追加するTake Screenshotだけが結果に残ります。

スクリーンショットとLoopアクションを設定する

  1. スクリーンショットの種類と、時間差を付けるかどうかを選びます。
  2. 結果の保存先を選びます。
  3. Take Screenshotの後にLoopを追加します。
  4. Loop automaticallyを選び、最初のテストでは短い停止時間を設定します。
  5. Runをクリックします。
Take Screenshotの後に、1分で停止するLoopを置いたAutomatorワークフロー
このテストでは、5秒待ってメインモニターを撮影し、ワークフローを1分間繰り返します。

AppleのLoopアクションは、その前に置いたアクションを繰り返します。最初から無期限で動かすより、1分で止めるほうが安全に試せます。

標準アクションのワークフローは、処理の流れを学ぶ場合や簡単な自動化に向いています。ただし、保存先には注意が必要です。Take Screenshotの保存先をクリップボードにすると、ループのたびに前の画像が置き換わり、最後には最新の1枚しか残りません。

一連の画像を残すには、各結果をディスクへ書き込む保存先または後続アクションを選び、1分間のテストでできた最初の3ファイルを確認します。各回を並べ替え可能な個別ファイルにしたい場合は、次のシェルを使う方法が適しています。frame-001.pngのような厳密な名前が必要なら、コマンドラインのシェルループを使います。

方法2:Run Shell ScriptとAutomatorのLoopを組み合わせる

AppleはAutomatorのRun Shell Scriptアクションを案内しています。1回だけキャプチャする短いスクリプトと、Automator標準のLoopを組み合わせます。

  1. 新しいWorkflowを作成します。
  2. Run Shell Scriptを検索して追加します。
  3. Shellを/bin/zshに設定します。
  4. スクリプトを貼り付けます。
  5. Run Shell Scriptの後にLoopを追加します。
  6. Loop automaticallyを選び、テストでは1分後に停止するよう設定します。
  7. Runをクリックし、出力先フォルダを確認します。
スクリーンショット用コマンドを実行するためzshに設定したAutomatorのRun Shell Scriptアクション
Shellを/bin/zshに設定し、以下のスクリプト全体を貼り付けます。
RUN_DIR="$HOME/Desktop/automator-captures"
mkdir -p "$RUN_DIR"

STAMP=$(date +%Y%m%d-%H%M%S)
screencapture -x -m "$RUN_DIR/capture-$STAMP.png"
sleep 5

各回でメインモニターを1枚撮影し、タイムスタンプ付きで保存します。5秒待ったら、Loopがワークフローをもう一度実行します。タイムスタンプがあるので時系列順に並びますが、フレーム番号の連番にはなりません。

AutomatorのLoopで指定できるのは、おおまかな時間制限です。正確なフレーム数やframe-001.pngのような名前が必要なら、コマンドラインを使います。

screencaptureの追加オプション、形式、ページ送り、長時間実行時の制御については、Macでコマンドラインからスクリーンショットを撮る方法をご覧ください。

再利用できるAutomatorアプリとして保存する

Automatorの書類タイプは、新規書類を作成するときに選びます。Workflowが正しく動いたら、Application書類を新しく作り、テスト済みのアクションをコピーし、Dashboard Screenshot Runのような用途が分かる名前で保存します。

ダブルクリックで起動できるアプリは便利ですが、開いた直後にキャプチャが始まることもあります。最初の待ち時間を十分に取り、対象ウインドウを整える余裕を設けてください。出力先フォルダもワークフロー内で分かりやすくしておきます。

ワークフローのトラブルシューティング

問題対処方法
最新のスクリーンショットしか残らないクリップボードだけを保存先にしてループしない。各結果を残すか、タイムスタンプ付きシェル出力を使う
スクリーンショットが真っ黒になる「画面収録とシステムオーディオ」でAutomatorを許可し、開き直して再試行する
想定より長く繰り返すテスト中はLoopの停止時間を短く設定する
シェル出力が古い画像を上書きする各ファイル名にタイムスタンプを残す。連番が必要なら1つのシェルループを使う
違う範囲が写るウインドウ位置を直し、-Rを更新して3フレーム試す
ワークフローが止まったように見えるタイマー付きまたは対話式キャプチャが入力待ちの可能性がある。画面とAutomatorログを確認する

Automatorだけでは足りない場合

少数の決まったワークフローならAutomatorで対応できます。実行ごとにウインドウ、キー入力、フレーム数、時間、書き出し形式を変えたい場合や、撮影後に確認したい場合は、専用のキャプチャアプリのほうが管理しやすいことがあります。

これらの設定を1つの画面で調整したい場合、Shotomaticならキャプチャ設定、フレーム確認、書き出しをまとめて扱えます。ShotomaticでMacのスクリーンショットを自動化する方法をご覧ください。並び順どおりの書類を作ることが主目的なら、MacでスクリーンショットをPDFに保存する方法も参考になります。

よくある質問

MacのAutomatorでスクリーンショットを繰り返し撮れますか?

はい。Take Screenshotの後にLoopを追加します。画面上で流れを組み立てたい場合に向きます。各回を個別のタイムスタンプ付きファイルにする場合は、シェルアクションも使えます。

Automatorのスクリーンショット用ワークフローで、クリップボードに最後の1枚しか残らないのはなぜですか?

ループするたびに、前回のクリップボード内容が置き換わるためです。各キャプチャを一意のファイルに保存するか、Run Shell Scriptアクションでタイムスタンプ付きの連続ファイルを作成してください。

AutomatorのLoopとシェルのループは、どちらを使うべきですか?

画面上でワークフローを組み立てたい場合はLoopを使います。ファイル名、フレーム数、キャプチャ座標、間隔を1か所で厳密に管理したい場合は、シェルのループを使います。

ワークフローをアプリとして保存できますか?

はい。最初からApplication書類を作るか、検証済みのワークフローをApplicationとして作り直せば、ダブルクリックで起動できます。

繰り返しのスクリーンショットを完成した成果物に

ShotomaticはMacでスクリーンショットのセッションを撮影、整理、書き出しできます。

MacのAutomatorでスクリーンショットを繰り返し撮る方法 | ブログ | Shotomatic