Answered
AEで自作したフォルダー整理スクリプトでの、平面レイヤーの管理のバグ
私が作ったフォルダー整理スクリプトです。ファイルの種類、拡張子に合わせてフォルダーに自動で収納されます。平面にも対応させました。
が、このスクリプトを実行したら生成される「00_SOLID」というフォルダー。
あとからAeで平面レイヤーを生成すると同じ「00_SOLID」という名前のフォルダーが生成され、平面レイヤーはこちらに入ってしまいます。これは私が環境設定で「00_SOLID」を平面フォルダーに指定しているからなのですが、どうしてすでにある方を使ってくれないのでしょうか。
改善が出来ない場合、どうしたらいいかアイデアを教えてください。
//わたしが使ってるファイル整理をワンクリックで実現できます。
//すでにフォルダがある場合、拡張子に応じてフォルダーに収納されます。
function main() {
// エラーチェックで、プロジェクトが開かれているか確認
if (!app.project) {
alert("プロジェクトが開かれていません。\nプロジェクトを開いてから実行してください。");
return;
}
try {
app.beginUndoGroup("Create and Organize Project Folders");
// フォルダー名の配列
var folderNames = [
"00_SOLID",
"01_COMP",
"02_IMAGE",
"03_AUDIO",
"04_VIDEO",
"05_IMAGE_SEQ",
"06_OTHER",
"07_RENDER"
];
var folders = {};
// 既存のフォルダーを確認し、なければ新しいフォルダーを作成
for (var i = 0; i < folderNames.length; i++) {
var existingFolder = null;
for (var j = 1; j <= app.project.items.length; j++) {
var item = app.project.items[j];
if (item instanceof FolderItem && item.name === folderNames[i]) {
existingFolder = item;
break;
}
}
if (existingFolder) {
folders[folderNames[i]] = existingFolder;
} else {
var newFolder = app.project.items.addFolder(folderNames[i]);
newFolder.label = 0;
folders[folderNames[i]] = newFolder;
}
}
// 既存のファイルをフォルダーに振り分け
for (var k = 1; k <= app.project.items.length; k++) {
var item = app.project.items[k];
// 各ファイルのタイプに応じてフォルダーに移動
if (item instanceof CompItem) {
item.parentFolder = folders["01_COMP"];
} else if (item instanceof FootageItem && item.mainSource instanceof SolidSource) {
// 平面レイヤーとヌルレイヤーを00_SOLIDに分類
item.parentFolder = folders["00_SOLID"];
} else if (item instanceof FootageItem && item.mainSource instanceof FileSource) {
var fileExtension = item.mainSource.file.name.split('.').pop().toLowerCase();
// シーケンス画像かどうかの判定する!!
if (item.mainSource.isStill == false && (fileExtension === 'png' || fileExtension === 'jpg' || fileExtension === 'jpeg')) {
item.parentFolder = folders["05_IMAGE_SEQ"];
} else {
switch (fileExtension) {
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
case 'bmp':
case 'tiff':
item.parentFolder = folders["02_IMAGE"];
break;
case 'wav':
case 'mp3':
case 'aif':
case 'aac':
case 'ogg':
item.parentFolder = folders["03_AUDIO"];
break;
case 'mp4':
case 'mov':
case 'avi':
case 'mkv':
case 'flv':
case 'wmv':
item.parentFolder = folders["04_VIDEO"];
break;
default:
item.parentFolder = folders["06_OTHER"];
break;
}
}
}
}
} catch (error) {
alert("エラーが発生しました:\n" + error.toString());
} finally {
app.endUndoGroup();
}
}
main();