Photoshop Scripting のスニペット集

このページは、Photoshop Scripting (JavaScript) のスニペットなどをまとめる予定のページです。

目次

注意

スニペット

ファイルを開く

const file = new File('/path/to/file.psd');
open(file);
  • /path/to/file.psd は必要なファイルパスに変更します。

ファイルを開く (テキスト)

const file = new File('~/test.txt');
file.open('r');
while (!file.eof) {
    line = file.readln(); // 1行読み込む
    // 何か処理
}
  • ~/test.txt は必要なファイルパスに変更します。

複製保存 (PSD)

const saveFile = new File('/path/to/file.psd');
const options = new PhotoshopSaveOptions();
activeDocument.saveAs(saveFile, options, true);
  • /path/to/file.psd は必要なファイルパスに変更します。

スクリプトのパス

const filename = $.fileName;
const dir = (new File($.fileName)).parent;

単位の変更

単位を px に変更
preferences.rulerUnits = Units.PIXELS;

ダイアログ非表示

const startDisplayDialogs = displayDialogs;
displayDialogs = DialogModes.NO; // 非表示

// なにか処理

displayDialogs = startDisplayDialogs; // 戻す

レイヤーの取得

const layer = activeDocument.artLayers.getByName('レイヤー名');

レイヤーの幅・高さの取得

const bounds = layer.bounds;
const layerWidth = bounds[2] - bounds[0]; // 幅
const layerHeight = bounds[3] - bounds[1]; // 高さ

テキストレイヤーにテキスト設定

layer.textItem.contents = 'テキスト\r改行テキスト';

レイヤースタイルの適用

layer.applyStyle('スタイル名');

ユーティリティ関数

レイヤーの位置の移動

/**
 * レイヤーを移動します。(左上起点)
 * @param {ArtLayer} layer レイヤー
 * @param {number} x X座標
 * @param {number} y Y座標
 */
function layerMoveTo(layer, x, y) {
    const bounds = layer.bounds;
    layer.translate(-bounds[0] + x, -bounds[1] + y);
}
/**
 * レイヤーを移動します。(左下起点)
 * @param {ArtLayer} layer レイヤー
 * @param {number} x X座標
 * @param {number} y Y座標
 */
function layerMoveToFromBottomLeft(layer, x, y) {
    const docHeight = activeDocument.height.value;
    const bounds = layer.bounds;
    const layerHeight = bounds[3] - bounds[1];
    layer.translate(-bounds[0] + x, -bounds[1] + docHeight - layerHeight - y);
}
/**
 * レイヤーを移動します。(中央下起点)
 * @param {ArtLayer} layer レイヤー
 * @param {number} x X座標
 * @param {number} y Y座標
 */
function layerMoveToFromBottomCenter(layer, x, y) {
    const docWidth = activeDocument.width;
    const docheight = activeDocument.height;
    const bounds = layer.bounds;
    const layerWidth = bounds[2] - bounds[0];
    const layerHeight = bounds[3] - bounds[1];
    layer.translate(-bounds[0] + docWidth / 2 - layerWidth / 2 + x, -bounds[1] + docheight - layerHeight - y);
}