Estoy creando un panel para After Effects, y para una de las funcionalidades necesito obtener el tamaño total de una carpeta concreta, es decir, la suma de todo su contenido.
He buscado por todas partes de la intenné, y lo que mas se acerca a lo que necesito es un código en javascript de GitHub:
rluvaton/getFolderSize.js
El problema es que creo que todas las posibles soluciones que he encontrado usan Node.js (que al parecer es la leche de fácil usándolo, peeeeeeero como es para un panel en extendedscript no me vale (y también porque soy tan rookie en programación que ni siquiera sé implantarlo sinceramente…).
Hasta donde he conseguido llegar es a este codigo, pero lo único que me devuelve la alerta es “NaN undefined”…
Hay alguna forma de hacer lo que necesito usando código extendscript exclusivamente o el problema es que estoy intentando algo que simplemente no se puede hacer?
Gracias de antemano a todos!
```
// Variable of folder path:
{
var testFolder = "/Users/macpro/Desktop/Test";
}
function myFunction() {
// Please Write the path of the folder you want sub path seperated with slash(,) (spaces are counted)
// for example: for myFolder/test -> myFolder,test
// And NOT myFolder, test
var folders = (testFolder);
if(!folders || folders.length === 0) {
return;
}
Logger.log('Finished: ' + formatSize(getFolderSize(findFolder(null, folders, 0))));
}
// a - bytes
// b - number after point
function formatSize(a, b) {
if(0==a)return"0 Bytes";
var c=1024,d=b||2,e=("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"),f=Math.floor(Math.log(a)/Math.log(c));
return parseFloat((a/Math.pow(c,f)).toFixed(d))+" "+e(f)
}
function findFolder(parent, folderNames, i) {
if(folderNames.length - 1 < i) {
return parent;
}
var folderName = folderNames(i);
Logger.log(folderName);
if(!parent) {
var folders = DriveApp.searchFolders('title contains "'+folderName+'"');
parent = folders.next();
}
var foundedFolders = parent.getFolders();
while (foundedFolders.hasNext()){
var folder = foundedFolders.next();
return findFolder(folder, folderNames, i + 1);
}
}
function getFolderSize(folder) {
if(!folder) {
return 0;
}
var size = 0;
var files = folder.getFiles();
while (files.hasNext()){
var file = files.next();
size +=file.getSize();
}
var subFolders = folder.getFolders();
while (subFolders.hasNext()){
var subFolder = subFolders.next();
size += getFolderSize(subFolder);
}
return size;
}
alert(formatSize(size))
```