Skip to content

Instantly share code, notes, and snippets.

@jagedn
Last active October 4, 2019 09:12
Show Gist options
  • Save jagedn/7c3705a3cadd2b80211d46d1e8d8f937 to your computer and use it in GitHub Desktop.
Save jagedn/7c3705a3cadd2b80211d46d1e8d8f937 to your computer and use it in GitHub Desktop.
Custom function para Google Sheet que traspone los valores de una columna en filas agrupando por un tamaño dado
/*
Si tienes una lista de registros en una sóla columna (por ejemplo una lista de IDs)
y los necesitas en filas puedes usar la función `=TRANSPOSE`
pero si son miles de registros la funcion dará un error.
Con esta función transpones la columna en N filas de SIZE elementos
*/
function trasponer_agrupar(input, size) {
if( !input.map )
return [];
var array = [];
size = size ? size : 100;
var all = input.map(function(e){return e;})
var current = []
for each (var value in all){
current.push(''+value)
if( current.length == size ){
array.push( current );
current = []
}
}
array.push( current );
return array;
}
/*
Si tienes una lista de registros en una sóla columna (por ejemplo una lista de IDs)
y los necesitas en filas puedes usar la función `=TRANSPOSE`
pero si son miles de registros la funcion dará un error.
Con esta función transpones la columna en N filas de SIZE elementos
y puedes añadir para cada fila un texto al inicio y otro al final.
Así por ejemplo:
=trasponer_unificar(Sheet1!A1:A9116,20,"insert into table kk(id) values","(",")",";")
genera 456 filas con textos como:
insert into table kk(id) values(1)(2)...(20);
*/
function trasponer_unificar(input, size, prefix, preseparator, postseparator, suffix ) {
if( !input.map )
return [];
size = size ? size : 100;
prefix = prefix ? prefix : '';
suffix = suffix ? suffix : '';
preseparator = preseparator ? preseparator : ' ';
postseparator = postseparator ? postseparator : ' ';
var all = input.map(function(e){return e;})
var array = [];
var current = []
for each (var value in all){
current.push(''+value)
if( current.length == size ){
array.push( current );
current = []
}
}
array.push( current );
var ret = []
for each( var values in array ){
var line = prefix;
for each( var value in values){
line+=preseparator+value+postseparator
}
ret.push( line+suffix )
}
return ret;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment