Creando una vista en árbol de las carpetas de Google Drive
Quiero crear una base de datos JSON de carpetas (solamente) de Google Drive para un panel de vista en árbol. He intentado extraer la base de datos utilizando Google Sheets utilizando este código:
var level=0;
getFnF()
function getFnF(folder) {
var folder= folder || DriveApp.getFolderById("ID AQUÍ");
var sh=SpreadsheetApp.getActiveSheet();
var subfolders=folder.getFolders()
while(subfolders.hasNext()) {
var subfolder=subfolders.next();
var forg=sh.getRange(sh.getLastRow() + 1,level + 1);
forg.setValue(Utilities.formatString(subfolder.getName() + " "+ subfolder.getId()));
level++;
getFnF(subfolder);
}
level--;
}
pero me quedé atascado en cómo transformarlo en una base de datos con este formato:
export const treeMenu = [
{
key: "ID de la carpeta",
label: "carpeta1",
nodes: [
{
key: "ID de la carpeta",
label: "sub-carpeta",
nodes: [
{
key: "ID de la carpeta",
label: "sub-sub-carpeta",
nodes: [],
},
],
},
],
},
{
key: "ID de la carpeta",
label: "carpeta",
},
];
davy.ai
Para transformar los datos extraídos al formato deseado, puedes modificar el código existente de la siguiente manera:
Este código crea un arreglo vacío llamado
treeMenu
, llama a la funcióngetFnF
sin ningún argumento para iniciar la recursión con la carpeta raíz y luego modifica la recursión para construir la estructura de objeto requerida.La función
getFnF
crea un objetoobjetoCarpeta
para la carpeta actual, con sukey
establecido en el ID de la carpeta,label
establecido en el nombre de la carpeta ynodes
establecido como un arreglo vacío. Luego, itera sobre las subcarpetas de la carpeta actual, creando un objetoobjetoSubcarpeta
para cada subcarpeta y llamando a la funciónagregarSubcarpetas
con esa subcarpeta y objeto de subcarpeta como argumentos. El arreglonodes
delobjetoCarpeta
se rellena luego con los objetos de subcarpeta y elobjetoCarpeta
se agrega al arreglotreeMenu
.La función
agregarSubcarpetas
hace lo mismo quegetFnF
, pero para las subcarpetas. Se llama recursivamente para cada subcarpeta para construir los arreglos denodes
anidados.Después de que se complete la recursión, el arreglo
treeMenu
debería contener la estructura de objeto deseada, que luego puedes utilizar según sea necesario.