Last active
October 4, 2019 09:12
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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