Logré registrar el directorio de archivos/carpetas de una carpeta en una hoja de Google. De esta hoja de Google, me gustaría copiar esta estructura de carpetas leyendo cada fila.
Enlace de hoja de Google: https://docs.google.com/spreadsheets/d/1qgDd8PEmHSYz5IsN9banYBjbmAyoLLVe3WMnOvmHdlE/edit?usp=sharing
function copyFolderTree() { const sourceFolderId = '1uTGq2MRHzbev23sQzzFCi3Pl-v-ntMql'; const sourceFolder = DriveApp.getFolderById(sourceFolderId).getName(); const ss = SpreadsheetApp.getActiveSpreadsheet(); const ws = ss.getSheetByName('Sheet1'); const data = ws.getDataRange().getValues(); range.shift() const destinationRootFolder = DriveApp.createFolder(`${sourceFolder}`) data.forEach(function(row){ Logger.log(row) let depth = row[4] if (row[4] === depth && row[2] === 'Folder') { Logger.log(`Name of folder is currently ${row[4]}`) Logger.log(`Depth is currently ${row[4]}`) Logger.log(`Type is currently ${row[2]}`) destinationRootFolder.createFolder(row[0]) row.push('hello') Logger.log(row) range.setValues(values); } }) } I realise this is the incorrect thinking. Do I need to place the newly created folder into it's copied parent folder using the folder's name? Thank you, [1]: https://docs.google.com/spreadsheets/d/1qgDd8PEmHSYz5IsN9banYBjbmAyoLLVe3WMnOvmHdlE/edit?usp=sharingPara el árbol de carpetas, puede probar
function copyFolderTree() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const ws = ss.getSheetByName('Sheet1'); const range = ws.getDataRange(); const values= range.getValues(); var levels = [] values.forEach(r => { if (r[2]=='Folder'){ if (r[4]==0){ // root var dossier = DriveApp.createFolder(r[0]); levels[1] = dossier.getId(); // specific correction as 1 doesn't exists in the example provided } else { var parent = DriveApp.getFolderById(levels[r[4]-1]); var dossier = parent.createFolder(r[0]); levels[r[4]] = dossier.getId(); } } }) }De From this Google Sheet I would like to copy this folder structure by reading each row. y First I would like to create the folder structure. My next step would be to work on transferring the files across. , cuando desee copiar una carpeta (en su hoja de cálculo de muestra, es "Amy Bits"), incluidas todas las subcarpetas y archivos mediante Google Apps Script, ¿qué tal la siguiente secuencia de comandos de muestra? Creé una biblioteca de Google Apps Script para lograr esta situación. Entonces, en esta respuesta, me gustaría proponer el script usando la biblioteca de Google Apps Script.
Puede ver el método para instalar la biblioteca aquí .
En esta biblioteca, se utiliza Drive API. Por lo tanto , habilite la API de Drive en los servicios avanzados de Google .
Cuando se usa su hoja de cálculo de muestra, el script de muestra es el siguiente.
function myFunction() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); const sourceFolderId = sheet.getRange("B2").getValue().split("/")[5]; // Please set the source folder ID. const destinationFolderId = DriveApp.createFolder("sample").getId(); // Please set the destination folder ID. const object = { sourceFolderId, destinationFolderId, overwrite: true }; const res = CopyFolder.copyAllFilesFolders(object); console.log(res); }Si puede colocar directamente el ID de la carpeta de origen y el ID de la carpeta de destino, también puede usar el siguiente script de muestra.
function myFunction() { const object = { sourceFolderId: "###", // Please set the source folder ID. destinationFolderId: "###", // Please set the destination folder ID. overwrite: true, }; const res = CopyFolder.copyAllFilesFolders(object); console.log(res); }