Skip to content

Instantly share code, notes, and snippets.

@pfelipm
Last active February 9, 2021 12:05
Show Gist options
  • Save pfelipm/aec0b1185e4e85fc7ac2fdcf13ca4a49 to your computer and use it in GitHub Desktop.
Save pfelipm/aec0b1185e4e85fc7ac2fdcf13ca4a49 to your computer and use it in GitHub Desktop.
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