終了

Illustratorスクリプト:開いている全てのファイルに処理をしたい

New Here ,
May 18, 2024 May 18, 2024

リンクをクリップボードにコピー

コピー完了

Illustratorで、アートボードをアートワークのバウンディングボックスに合わせる処理を開いている全てのファイルに実行したいのですが、うまくいきませんでした。

スクリプトは

https://gist.github.com/kanemu/1136345

こちらのページのものを使って、ファイルの数だけ繰り返すコードを加えました。

 

#target "Illustrator"

//アートボードをアートワークのバウンディングボックスに合わせる

var docObj = app.documents;

var fitToAllObject = function(doc){
//アクティブなアートボードをとる
var board = doc.artboards[doc.artboards.getActiveArtboardIndex()];
//オブジェクトを全てとる
var sels = doc.pageItems;
//0以上なら
if(sels.length > 0){
var bns;
for(i=0 ; i < docObj.length ; i++) {
var sel = sels[i];
//ガイドか、隠されていたらスルー
if(sel.guides||sel.hidden)continue;
//レイヤーが非表示ならスルー
if(!sel.layer.visible)continue;
var nowBns = sel.visibleBounds;
if(!bns){
//bnsがなければ設定
bns = nowBns;
}else{
//あったら比較
if(bns[0]>nowBns[0])bns[0]=nowBns[0];
if(bns[1]<nowBns[1])bns[1]=nowBns[1];
if(bns[2]<nowBns[2])bns[2]=nowBns[2];
if(bns[3]>nowBns[3])bns[3]=nowBns[3];
}
};
//アートボードのサイズを設定
board.artboardRect = bns;
};
};

var doc = app.activeDocument;
fitToAllObject(doc);

 

環境は2023を使用しています。

分かる方にご教示いただければ幸いです。

よろしくお願いいたします。

キーワード
Mac , スクリプティング

表示

249

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 2 件の正解

Community Expert , May 18, 2024 May 18, 2024

元のスクリプトの

for(var i=sels.length-1;i>=0;i--){

のところを

for(i=0 ; i < docObj.length ; i++) {

に書き換えたんですね。

簡単に説明すると、アートボードにあるオブジェクトすべてのサイズを取得するところを、アートボードにあるオブジェクトのサイズを、開いているドキュメントの数だけ取得することに変更されています。

まず、元のスクリプトの1行1行が何をやっているのかを理解するところから学習してください。

投票

翻訳

翻訳
エクスプローラー , May 19, 2024 May 19, 2024

一番下の

var doc = app.activeDocument;
fitToAllObject(doc);

を、

for(var d=0; d<documents.length; d++){
    app.activeDocument = documents[d]
    var doc = app.activeDocument;
    fitToAllObject(doc);
};

といったところでしょうか。

投票

翻訳

翻訳
Community Expert ,
May 18, 2024 May 18, 2024

リンクをクリップボードにコピー

コピー完了

元のスクリプトの

for(var i=sels.length-1;i>=0;i--){

のところを

for(i=0 ; i < docObj.length ; i++) {

に書き換えたんですね。

簡単に説明すると、アートボードにあるオブジェクトすべてのサイズを取得するところを、アートボードにあるオブジェクトのサイズを、開いているドキュメントの数だけ取得することに変更されています。

まず、元のスクリプトの1行1行が何をやっているのかを理解するところから学習してください。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
May 19, 2024 May 19, 2024

リンクをクリップボードにコピー

コピー完了

ご返信ありがとうございます。

他の全てのファイルに処理を実行しているスクリプトを参考に加えたのですが、勉強不足で申し訳ありません。

もう少し学習します。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
May 19, 2024 May 19, 2024

リンクをクリップボードにコピー

コピー完了

一番下の

var doc = app.activeDocument;
fitToAllObject(doc);

を、

for(var d=0; d<documents.length; d++){
    app.activeDocument = documents[d]
    var doc = app.activeDocument;
    fitToAllObject(doc);
};

といったところでしょうか。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
May 19, 2024 May 19, 2024

リンクをクリップボードにコピー

コピー完了

最新

ご返信ありがとうございます。

教えていただいた通りに書き直すとうまくできました!本当にありがとうございます。大変助かりました!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines