今回は前回の続きですが、スクリプトが長いので即本題です。以下は現在開かれているドキュメントに自動的に今日の日付を入れます。
function timeStamp()
{
docObj = app.documents;
for (i=0; i<docObj.length; i++)
{
app.activeDocument = docObj[i];
dateObj = new Date();
y = dateObj.getFullYear();
m = dateObj.getMonth() + 1;
d = dateObj.getDate();
str = "作成日:"+y+"年"+m+"月"+d+"日"; // 表示する文字列
layObj = docObj[i].artLayers.add();
layObj.kind = LayerKind.TEXT;
layObj.textItem.font = "Osaka"; // 書体(フォント)を指定
layObj.textItem.justification = Justification.RIGHT; // 行揃え指定
layObj.textItem.contents = str;
w = parseFloat(docObj[i].width); // ページの横幅
h = parseFloat(docObj[i].height); // ページの縦幅
x = parseFloat(layObj.bounds[2]); // テキストの右座標
y = parseFloat(layObj.bounds[3]); // テキストの下座標
offsetX = 20; // 右側の余白
offsetY = 5; // 下側の余白
layObj.translate(w - x - offsetX, h - y - offsetY);
}
}
function setUnit(unt){ preferences.rulerUnits = unt; }
function getUnit(){ return preferences.rulerUnits; }
saveUnit = getUnit();
setUnit(Units.PIXELS); // 幅を指定する場合の単位
timeStamp(); // タイムスタンプ
setUnit(saveUnit);
どこを、どう修正するかは前回と同じなので前回を参照してください。次に以下のスクリプトは指定したフォルダにあるPSDファイルのみ開いて日付を入れ自動的に保存するものです。
function timeStamp()
{
folderRef = Folder.selectDialog("保存先フォルダを選択してください")
if(folderRef != null)
{
fileList = folderRef.getFiles("*.psd");
for (i=0; i<fileList.length; i++)
{
fileObj = new File(fileList[i].fsName);
open(fileObj);
docObj = activeDocument;
dateObj = new Date();
y = dateObj.getFullYear();
m = dateObj.getMonth() + 1;
d = dateObj.getDate();
str = "作成日:"+y+"年"+m+"月"+d+"日"; // 表示する文字列
layObj = docObj.artLayers.add();
layObj.kind = LayerKind.TEXT;
layObj.textItem.font = "Osaka"; // 書体(フォント)を指定
layObj.textItem.justification = Justification.RIGHT; // 行揃え指定
layObj.textItem.contents = str;
w = parseFloat(docObj.width); // ページの横幅
h = parseFloat(docObj.height); // ページの縦幅
x = parseFloat(layObj.bounds[2]); // テキストの右座標
y = parseFloat(layObj.bounds[3]); // テキストの下座標
offsetX = 20; // 右側の余白
offsetY = 5; // 下側の余白
layObj.translate(w - x - offsetX, h - y - offsetY);
docObj.close(SaveOptions.SAVECHANGES);
}
}
}
function setUnit(unt){ preferences.rulerUnits = unt; }
function getUnit(){ return preferences.rulerUnits; }
saveUnit = getUnit();
setUnit(Units.PIXELS); // 幅を指定する場合の単位
timeStamp(); // タイムスタンプ
setUnit(saveUnit);
実行するとフォルダ選択ダイアログがでますが、場合によっては特定のフォルダにあるPSDデータを処理することもあります。このような場合は
folderRef = Folder.selectDialog("保存先フォルダを選択してください")
の行を以下のようにします。
folderRef = new Folder ("/psd_data/");
/psd_data/が処理すべきフォルダへのパスになります。
ちなみに、文字の色やサイズや字間など細かい指定も可能です。スクリプト実行時の日付でなくPSDファイルが修正された日や作成日にする事も可能です。作品の日付は最終更新日を読み出して処理することもできます。これは
dateObj = new Date();
を
dateObj = fileObj.modified;
にするだけです。試してみてください。