Cómo pasar una matriz a lista con Google Apps Script?


Artículo perteneciente a colaboraciones con Stack Overflow

Hace un tiempo vi de casualidad en stackoverflow una pregunta echa por Rubén que me pareció que podía ser un buen ejemplo para este blog. Aquí os dejo el link de la pregunta 

Resumiendo, lo que se pedía era buscar la manera de pasar la información que tenemos en una tabla bidimensional a una lista.

Es decir, teniendo esta información original:

Tenemos que pasarla a este otro formato:

Dado que la respuesta original era utilizando formulas ( que se recalculan al editar la hoja) este script se ejecuta bajo los eventos de onEdit y onOpen.

Os dejo el código, espero que os sirva:
function onOpen()
{
    Convert();
};

function onEdit()
{
    Convert();
};

function Convert()
{
  var spread = SpreadsheetApp.getActive();
  var sheet_ori = spread.getSheetByName("Original");
  var sheet_dst = spread.getSheetByName("Destino");

  var values_ori = sheet_ori.getDataRange().getValues();

  var names = values_ori[0];
  var cont = 1;

  for(var i = 1 ; i < values_ori.length ; ++i)
  {
    var row = values_ori[i];
    var caption = row[0];
    for(var j = 1 ; j < row.length ; ++j)
    {
        sheet_dst.getRange(cont, 1).setValue(caption);
        sheet_dst.getRange(cont, 2).setValue(names[j]);
        sheet_dst.getRange(cont, 3).setValue(row[j]);
        cont++;
    }
  }
}

Cualquier duda ya lo sabeis.

No hay comentarios:

Publicar un comentario

Tal vez te interese