クリエイター手抜きプロジェクト[574]InDesign編 フォルダ/サブフォルダ内にあるすべてのAIファイルを配置する(2)/古籏一浩

投稿:  著者:  読了時間:8分(本文:約3,500文字)



今回もInDesignのスクリプトですが、前回掲載したものに機能を追加したものになります。ちょっとスクリプトが長くなっているので、使い方だけ書きます。

以下のスクリプトは、フォルダ/サブフォルダ内にあるすべてのAIファイルを1ページに1つずつ配置していきます。AIファイルの数に応じて自動的にページが追加され、さらにPDFファイルをデスクトップ上に保存します。なお、このスクリプトは見開きページでは動作しません。




// フォルダ内のすべてのAIファイルを配置(PDF生成&保存)
(function (){
var aiFolder=Folder.selectDialog("AIファイルがあるフォルダを選択");
if(!aiFolder){ return; }
var targetPage=0;
getAiFile(aiFolder);
// PDFとして保存
app.activeDocument.exportFile(
ExportFormat.PDF_TYPE,
new File("~/Desktop/"+aiFolder.name+".pdf")
);
// 再帰処理を行う関数
function getAiFile(targetFolder){
var fileList=targetFolder.getFiles("*.ai");
for(var i=0; i<fileList.length; i++){
var totalPage=app.activeDocument.pages.length-1;
if(totalPage<targetPage){
var pageObj=app.activeDocument.pages.add(
LocationOptions.AT_END // 最後にページを追加
);
}else{
var pageObj=app.activeDocument.pages[targetPage];
}
targetPage++;
var aiFrame=pageObj.place(fileList[i]);
aiFrame[0].parent.move(["20mm","20mm"]);
}
// フォルダの場合は自分自身の関数を呼び出す
var folderList=targetFolder.getFiles();
for(var i=0; i<folderList.length; i++){
if(folderList[i].getFiles){
getAiFile(folderList[i]);
}
}
}
})();

上記のスクリプトでは、新規に作成したInDesignドキュメントが残ってしまいます。単純にPDFだけ生成できれば用が足りるのであれば、以下のスクリプトを使用してください。PDF生成後にInDesignのドキュメントは、保存されずに閉じられます。

// フォルダ内のすべてのAIファイルを配置(自動生成&PDF保存)
(function (){
var aiFolder=Folder.selectDialog("AIファイルがあるフォルダを選択");
if(!aiFolder){ return; }
// ページ設定
var dp=app.documentPresets.add({
facingPages:false, // 単ページ
pagesPerDocument:1, // ページ数
pageWidth:210, // ページの横幅
pageHeight:297 // ページの縦幅
});
var doc=app.documents.add(true,dp,{
zeroPoint:[0,0], // 原点設定
});
var targetPage=0;
getAiFile(aiFolder);
// PDFとして保存
app.activeDocument.exportFile(
ExportFormat.PDF_TYPE,
new File("~/Desktop/"+aiFolder.name+".pdf")
);
app.activeDocument.close(SaveOptions.no);
// 再帰処理を行う関数
function getAiFile(targetFolder){
var fileList=targetFolder.getFiles("*.ai");
for(var i=0; i<fileList.length; i++){
var totalPage=app.activeDocument.pages.length-1;
if(totalPage<targetPage){
var pageObj=app.activeDocument.pages.add(
LocationOptions.AT_END // 最後にページを追加
);
}else{
var pageObj=app.activeDocument.pages[targetPage];
}
targetPage++;
var aiFrame=pageObj.place(fileList[i]);
aiFrame[0].parent.move(["20mm","20mm"]);
}
// フォルダの場合は自分自身の関数を呼び出す
var folderList=targetFolder.getFiles();
for(var i=0; i<folderList.length; i++){
if(folderList[i].getFiles){
getAiFile(folderList[i]);
}
}
}
})();

逆にInDesignファイルも残しておいて、さらに自動的に保存して欲しい場合は、以下の行を変更してください。デスクトップに、フォルダ名.inddというファイル名でドキュメントが保存されるようになります。

app.activeDocument.close(SaveOptions.no);
 ↓
app.activeDocument.save(new File("~/Desktop/"+aiFolder.name+".indd"));


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

ロボット関係のノウハウが皆無に近いので、とりあえずいくつか安いロボットを購入してみました。obnizのRobotkit使って、お掃除ロボットみたいなことをやらせてみたけど、思ったほどうまくいかず。

回転角度などの問題もあるんだろうけど、いかんせん段差に弱く畳の隙間にはまって脱出できなかったり、いろいろ問題発生。キャタピラタイプの方が、ここらへん強いんだろうけど、そうすると壁際でうまく180度回転できなかったりしそう。(まだ、キャタピラタイプのは組み立ててないけど)ある程度ノウハウがたまったらデジクリのネタにでも……。

・InDesign自動化サンプルプログラム逆引きリファレンス上/下
https://www.amazon.co.jp/dp/4844396846/
https://www.amazon.co.jp/dp/4844396854/

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/