Photoshopスクリプトとは

Photoshopスクリプトとは、Photoshopでの作業を自動化するためのコードです。
Adobe様が提供するExtendScriptというJavaScriptベースの言語で書かれているのが特徴です。

複雑な作業や操作、繰り返し作業を短時間で行うことができるので、ドロップレットと合わせて是非とも覚えておきたいものです。

特徴と用途

作業効率化

  • 画像のリサイズやフォーマット変換など、面倒な手作業を一括で処理できます。
  • レイヤー操作やエフェクトの適用をスクリプトで実行します。

カスタマイズ性

自分のニーズに合わせた自動化ができる。

プラグインとの違い

プラグインは特定の機能拡張を行いますが、スクリプトはその機能を自由に操ることができるので、独自のプロセスを作成できます。

具体的な活用例

  • 指定フォルダ内の画像を特定サイズにリサイズする一括リサイズ
  • PSDファイル内の各レイヤーを個別の画像として保存する例いや~の一括出力
  • 特定フォントのテキストの追加や複数画像に同じエフェクトを適用する定型作業の自動化

マニュアル

Photoshopスクリプトのマニュアルについては、下記URLをご確認ください。
https://helpx.adobe.com/jp/photoshop/using/scripting.html

Photoshopスクリプティングガイド
https://github.com/Adobe-CEP/CEP-Resources/tree/master/Documentation/Product%20specific%20Documentation/Photoshop%20Scripting

Photoshopスクリプトサンプル

画像の一括リサイズ

// 画像フォルダを選択
var inputFolder = Folder.selectDialog("リサイズする画像フォルダを選択してください");
// 保存先フォルダを選択
var outputFolder = Folder.selectDialog("保存先フォルダを選択してください");

// フォルダ内のすべてのJPEG画像を取得
var files = inputFolder.getFiles("*.jpg");

// ファイルごとに処理を繰り返す
for (var i = 0; i < files.length; i++) {
  // ファイルを開く
  var doc = open(files[i]);
  // 画像を指定したサイズにリサイズ(幅800px、高さ500px)
  doc.resizeImage(UnitValue(800, "px"), UnitValue(500, "px"));
  // 保存先フォルダにJPEG形式で保存
  var outputFile = new File(outputFolder + "/" + doc.name);
  doc.saveAs(outputFile, new JPEGSaveOptions());
  // ドキュメントを閉じる(変更を保存しない)
  doc.close(SaveOptions.DONOTSAVECHANGES);
}

レイヤーの一括エクスポート

// 現在のアクティブなドキュメントを取得
var doc = app.activeDocument;

// ドキュメント内のすべてのレイヤーを取得
for (var i = 0; i < doc.artLayers.length; i++) {
  // 現在処理中のレイヤーを取得
  var layer = doc.artLayers[i];
  // 現在のレイヤーを可視化
  layer.visible = true;

  // 他のレイヤーを非表示にする
  for (var j = 0; j < doc.artLayers.length; j++) {
    if (j !== i) doc.artLayers[j].visible = false;
  }

  // レイヤーの名前を使ってPNG形式で保存
  var fileName = "~/Desktop/" + layer.name + ".png";
  doc.saveAs(new File(fileName), new PNGSaveOptions());
}

ガイドライン自動追加

// 配置するガイドの列数
var columns = 4;
// 配置するガイドの行数
var rows = 4;

// 垂直方向のガイドを追加
for (var i = 1; i < columns; i++) {
  // ドキュメント幅を列数で分割して位置を計算
  var x = (app.activeDocument.width / columns) * i;
  // 垂直ガイドを追加
  app.activeDocument.guides.add(Direction.VERTICAL, UnitValue(x, "px"));
}

// 水平方向のガイドを追加
for (var j = 1; j < rows; j++) {
  // ドキュメント高さを行数で分割して位置を計算
  var y = (app.activeDocument.height / rows) * j;
  // 水平ガイドを追加
  app.activeDocument.guides.add(Direction.HORIZONTAL, UnitValue(y, "px"));
}

レイヤーの透明部分を切り取って保存

// 現在のドキュメントを取得
var doc = app.activeDocument;

// すべてのレイヤーを順番に処理
for (var i = 0; i < doc.artLayers.length; i++) {
  // 現在のレイヤーをアクティブにする
  var layer = doc.artLayers[i];
  doc.activeLayer = layer;

  // レイヤーの透明部分をトリミング
  layer.trim(TrimType.TRANSPARENT, true, true, true, true);

  // トリミングされたレイヤーをPNG形式で保存
  var fileName = "~/Desktop/" + layer.name + "_cropped.png";
  doc.saveAs(new File(fileName), new PNGSaveOptions());
}

 

お知らせ一覧を見る