特定フォルダ内の使用素材だけを抽出したい
今回は特定のフォルダの中の素材に限定してアクティブのコンポの素材だけを仕分けしてみました。
目次
指定フォルダ内からアクティブのコンポの使用素材を抽出して別フォルダに格納するスクリプト
- アクティブコンポの素材名を取得して配列Aに
- 指定のフォルダ(今回はcompという名前)内の素材名をも取得して配列Bに
- 配列Aと配列Bとで合致するものだけを配列Aに
- あとは全体の素材から配列Aに含まれるものを抽出してコンポ名と同名のフォルダに格納します
app.beginUndoGroup("アクティブなコンポで使われているフッテージアイテムをまとめる");
app.activeViewer.setActive();
var array1 = [];
var myComp = app.project.activeItem;
var myCompName = app.project.activeItem.name;
//アクティブコンポの素材名を取得
for (i = 1; i <= myComp.numLayers; i++) {
try {
var myItemName = myComp.layer(i).source.name;
array1.push(myItemName);
} catch (e) {}
}
//指定のフォルダ内の素材名を取得
var array2 = [];
if (app.project.numItems > 0) {
for (var i = 1; i <= app.project.numItems; i++) {
var myItem = app.project.items[i];
if ((app.project.item(i) instanceof FolderItem) && (app.project.item(i).name === 'comp')) {
myFunc(app.project.item(i).items);
}
}
}
function myFunc(items) {
for (var i = 1; i <= items.length; i++) {
array2.push(items[i].name);
}
}
//アクティブコンポの素材名と指定のフォルダ内の素材名を取得との合致した素材を抽出
for (var i = 0; i0) {
for (var i = 1; i <= app.project.numItems; i++) {
var myItem = app.project.items[i];
if (myItem.name.indexOf(itemName) > -1) {
array1.push(myItem);
}
}
}
}
var size = array1.length;
var itemFolder = app.project.rootFolder.items.addFolder(myCompName);
for (var i = 0; i配列の中身をアラートで確認
中身を見たい時に使います。
for (var j=0; j<=array1.length; j++){
alert(array1[j]);
}特定のフォルダ内を除外してアクティブのコンポの使用素材を抽出して別フォルダに格納するスクリプト
逆の場合です。36行目を変更します。
if (array2[i] != array1[j]) {から
if (array2[i] == array1[j]) {にしています。
app.beginUndoGroup("アクティブなコンポで使われているフッテージアイテムをまとめる");
app.activeViewer.setActive();
var array1 = [];
var myComp = app.project.activeItem;
var myCompName = app.project.activeItem.name;
//アクティブコンポの素材名を取得
for(i = 1; i <= myComp.numLayers; i++){
try{
var myItemName =myComp.layer(i).source.name;
array1.push(myItemName);
} catch(e){
}
}
//除外したい指定のフォルダ内の素材名を取得
var array2 = [];
if (app.project.numItems>0){
for (var i=1; i<=app.project.numItems; i++){
var myItem = app.project.items[i];
if ((app.project.item(i) instanceof FolderItem) && (app.project.item(i).name === 'material')) {
myFunc(app.project.item(i).items);
}
}
}
function myFunc (items){
for(var i=1; i<=items.length;i++){
array2.push(items[i].name);
}
}
//アクティブコンポの素材名と指定のフォルダ内の素材名を取得との合致した素材を抽出
for (var i = 0; i<array2.length; i++) {
var arrlen = array1.length;
for (var j = 0; j<arrlen; j++) {
if (array2[i] == array1[j]) {
array1 = array1.slice(0, j).concat(array1.slice(j+1, arrlen));
}
}
}
for (var j=0; j<=array1.length; j++){
var itemName = array1[j];
if (app.project.numItems>0){
for (var i=1; i<=app.project.numItems; i++){
var myItem = app.project.items[i];
if ( myItem.name.indexOf(itemName)> -1){
array1.push(myItem);
}
}
}
}
var size = array1.length;
var itemFolder = app.project.rootFolder.items.addFolder(myCompName);
for (var i=0; i<size; i++) array1[i].parentFolder = itemFolder;
app.endUndoGroup();