Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Consolida los datos del intervalo indicado procedentes de todas las HdC dentro de la carpeta designada en la HdC actual
/**
* Importa intervalos de datos idénticos procedentes de todas
* las hdc que se encuentran en la carpeta indicada
* y los consolida en la actual.
* No realiza ningún control de errores.
* El orden de importación no está garantizado.
* Demo: https://drive.google.com/drive/folders/1BZNT5TNcOpKaP5Hy3BuvVZhT_FhtrWjr?usp=sharing
*/
const ID_CARPETA_ORIGEN = '1bqlCmxWaL-LCNb6T7vOWNtPky3bK99K-';
const RANGO_ORIGEN = 'Hoja 1!A1:E5';
const CELDA_DESTINO = 'Hoja 1!A1';
function consolidar() {
// Obtener referencias a las hdc dentro de la carpeta
const hdcsOrigen = DriveApp.getFolderById(ID_CARPETA_ORIGEN).getFilesByType(MimeType.GOOGLE_SHEETS);
// Lista de IDs de las hdc halladas
let idHdcs = [];
// Obtener todos los IDs por medio del iterador
while (hdcsOrigen.hasNext()) {
idHdcs.push(hdcsOrigen.next().getId());
}
// Abrir cada una de las hdc identificadas e importar datos de manera consolidada
let datosConsolidados = [];
idHdcs.forEach(hdc => {
let datos = SpreadsheetApp.openById(hdc).getRange(RANGO_ORIGEN).getValues();
// Opcional: elimina filas vacías del intervalo de cada HdC
datos = datos.filter(fila => fila.some(celda => celda != ''))
// Consolidar datos
datosConsolidados = [...datosConsolidados, ...datos];
});
// Adaptar dimensiones del intervalo destino a los datos a escribir
const rangoDestino = SpreadsheetApp.getActive().getRange(CELDA_DESTINO).offset(0, 0, datosConsolidados.length, datosConsolidados[0].length);
// Escribir datos importados a partir de celda destino
rangoDestino.setValues(datosConsolidados);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment