Macros en Hojas de Cálculo Google

download Macros en Hojas de Cálculo Google

of 5

Transcript of Macros en Hojas de Cálculo Google

  • 27/1/2014 Macros en Hojas de Clculo Google

    http://hojasdecalculogoogle.blogspot.mx/2013/06/macros-en-hojas-de-calculo-google.html 1/5

    10th June 2013

    [http://www.devfest.at/image/ahRzfmRldmZlc3QtYXQtaGVsbXV0aHISCxILU2Vzc2lvblRhbGsYkU4M]

    Seguinos en la comunidad en castellano de Hojas de Clculo Google

    [https://plus.google.com/u/0/communities/117381564739239305447]

    [http://www.kuleuven.be/english/news/unprecedented-study-reveals-new-genetic-risk-factors-of-breast-prostate-and-ovarian-cancer/image]

    Lo que en Excel se llama "macro", en las hojas de clculo Google se denominasecuencia de comandos, o script, y se usan para dos fines:

    Programas, que se ejecutan desde un menFunciones, para usar en frmulas

    Mientras las macros de Excel se escriben en Visual Basic, basado en BASIC, lassecuencias de comando de Google se escriben en Google Apps Script[https://developers.google.com/apps-script/overview?hl=es-ES] , que est basado enjavascript, el lenguaje estndar de las pginas web, y el ms popular del mundo.

    Macros en Hojas de Clculo Google

    El lenguaje Google App Script

  • 27/1/2014 Macros en Hojas de Clculo Google

    http://hojasdecalculogoogle.blogspot.mx/2013/06/macros-en-hojas-de-calculo-google.html 2/5

    Este artculo asume conocimientos de javascript. Si es necesario, se aprende muyfcil, basta con buscar "aprender javascript" en Google o en Youtube.

    El editor de secuencias de comandos se usa para escribir el cdigo, y se abre con elmen Herramientas, Editor de secuencias de comandos... La primera vezpresentar una pgina de plantillas de secuencias de comandos. Es bueno dedicarleun tiempo y recorrer los tutoriales y la plantilla para hoja de clculo. Pero para empezarun proyecto, conviene utilizar "proyecto en blanco".

    En lo sucesivo, si ya hay cdigo escrito, al abrir el editor de secuencias de comandosse saltear la pantalla de plantillas, a la que se puede volver con el men Ayuda,Pantalla de bienvenida...

    Google Apps Script, o GAS, usa la sintaxis de javascript, pero su poder reside en lasAPI, que le da acceso a la mayora de los productos de Google, como Google Drive yGMail. A continuacin recorreremos la API de hojas de clculo[https://developers.google.com/apps-script/reference/spreadsheet/?hl=es-ES] , conocidascomo Spreadsheets Services.

    El punto de entrada a las hojas de clculo es el objeto SpreadsheetApp, que estsiempre disponible (no hace falta ninguna preparacin especial para cargarlo). A partirde aqu se puede acceder a la mayora de los aspectos de una hoja de clculo. Laspartes de una hoja de clculo est ordenada de la siguiente manera:

    SpreadsheetApp [https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=es-ES] representa la aplicacinde hojas de clculo. Para comparar, existen tambin GMailApp, DriveApp,MapsApp, CalendarApp... creo que se entiende. Entre otras cosas permiteacceder a cualquier hoja de clculo Google, est abierta o no.

    Spreadsheet [https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet.html?hl=es-ES] representa una hojade clculo completa, con todas sus hojas y otros aspectos, como la lista deusuarios con la que se comparte.

    La hoja de clculo "activa", en la que se ejecuta la secuencia de comando, seobtiene con SpreadsheetApp.getActive()

    Sheet [https://developers.google.com/apps-script/reference/spreadsheet/sheet.html?hl=es-ES] representa una hoja dentro dela hoja de clculo. Ntese que la jerga es equvoca, porque denomina "hoja"tanto al archivo en su conjunto como a cada hoja dentro de l, como el pie deCortzar [http://www.literatura.org/Cortazar/Instrucciones.html] . En ingls sedenominan spreadsheet y sheet respectivamente. Dos maneras de acceder auna hoja (entre otras):

    SpreadsheetApp.getActiveSheet()

    SpreadsheetApp.getActive().getSheetByName('Hoja1')

    Spreadsheet Services: la API de las hojas de clculo

  • 27/1/2014 Macros en Hojas de Clculo Google

    http://hojasdecalculogoogle.blogspot.mx/2013/06/macros-en-hojas-de-calculo-google.html 3/5

    [http://omnific.net.au/images/ComputerCode_banner.jpg]

    Estas dos maneras se usan en los ejemplos que siguen

    Range [https://developers.google.com/apps-script/reference/spreadsheet/range.html?hl=es-ES] es la nica manera deacceder a las celdas de una hoja. Representa un rango, es decir una matrizrectangular de celdas, en una hoja determinada. Para trabajar con una sola celda,se trabaja con un rango de 1x1. Ejemplos para obtener un rango, y trabajar consu contenido

    SpreadsheetApp.getActiveRange()

    devuelve el rango de la seleccin actual. Normalmente corresponde a laposicin del cursor, si no hay un rango mayor seleccionado.

    SpreadsheetApp.getActive().getSheetByName('Hoja

    1').getRange('A1')

    devuelve el rango de la celda Hoja1!A1 , de la hoja de clculo activa. Elargumento puede adoptar todas las formas:

    A1:B2A:A (columna A)1:1 (fila 1)No admite Hoja1!A1. La hoja se debe indicar en el objeto anterior.

    SpreadsheetApp.getActive().getRange('Hoja1!A1')

    similar a la anterior, esta forma s admite indicar la hoja en el argumento. Si no se indica, se asume la hoja activa.

    SpreadsheetApp.getActive().getRange('Hoja1!A1').getValue()

    devuelve el valor del contenido de la celda superior izquierda del rango

    SpreadsheetApp.getActive().getRange('Hoja

    1!A1').setValue('Nuevocontenidodelacelda')

    escribe el contenido de la celda superior izquierda del rango

    Todas las funciones escritas en el editor de secuencias de comando de una hoja declculo, se pueden llamar desde la frmulas en cualquier celda de la misma hoja declculo. Por ejemplo, esta secuencia de comandos (aqu se requiere algnconocimiento de javascript):

    Funciones a medida

  • 27/1/2014 Macros en Hojas de Clculo Google

    http://hojasdecalculogoogle.blogspot.mx/2013/06/macros-en-hojas-de-calculo-google.html 4/5

    functionmsUno(nmero){

    returnnmero+1

    }

    Se puede incluir en una frmula en cualquier celda de la hoja de clculo:

    = MSUNO(5)

    Si bien las secuencias de comando distinguen maysculas y minsculas, lasfunciones de la hoja de clculo no. Escribiendo =msuno(5) tambin funciona.

    Lamentablemente las funciones de GAS no pueden utilizar las funciones de las hojasde clculo Google. Spreadsheet Services no proporciona, por ejemplo, la funcinVLOOKUP, ni COUNTIF, ni ninguna. En GAS se programa con las funciones propiasde javascript, ms los mtodos provistos por el servicio utilizado, en este casoSpreadSheet Services.

    Cuando una funcin es invocada desde una frmula, se ejecuta con limitaciones. Agrandes rasgos, la funcin se usa solamente para calcular un valor, y no puede, porejemplo, obtener la seleccin actual, modificar el valor de otra celda, agregar un men,insertar un grfico... Estas acciones quedan reservadas para secuencias de comandodisparadas por el usuario, y no dentro de frmulas.

    Un dato til: cuando la funcin es llamada por una frmula,SpreadsheetApp.getActiveRange() representa la celda que se est recalculandoen lugar de la posicin del cursor.

    Estas secuencias tienen acceso irrestricto a todo el poder de Google Apps Script. Sepueden agregar menes para generar hojas completas, crear otras hojas de clculo,enviar emails e interactuar con otros productos de Google, con servicios de terceros, eincluso con servidores propios, si fuera el caso.

    Estas secuencias de comando se pueden disparar desde un men a medida, ohaciendo clic en imgenes y grficos insertados en la hoja de clculo. La siguientefuncin agrega un men para disparar otra funcin de GAS:

    functiononOpen(){

    SpreadsheetApp.getActive().addMenu(

    'Menagregado',

    [{

    name:'Submenquedisparalafuncin',

    functionName:'nombreDeLaFuncinALlamarConElMen'

    }]

    )

    Secuencias ejecutadas por el usuario

  • 27/1/2014 Macros en Hojas de Clculo Google

    http://hojasdecalculogoogle.blogspot.mx/2013/06/macros-en-hojas-de-calculo-google.html 5/5

    }

    La funcin onOpen es una de las pocas que tiene un nombre predefinido. onOpen seejecuta automticamente cada vez que se abre la hoja de clculo. Como los menesse agregan a la interfaz de la hoja de clculo, y no a la hoja en s misma, stosdesaparecen al cerrarla. Por eso es usual utilizar onOpen para volver a agregar losmenes cada vez que se abre la hoja.

    Las secuencias de comando de Google son muy poderosas, pero su dominio exigemucha lectura y prctica. Es imposible abarcarlo completamente en este artculo, quesirve apenas de introduccin, pero est bien cubierto en una serie de tutoriales deGoogle en ingls, con este punto de partida [https://developers.google.com/apps-script/quickstart/macros?hl=es-ES] .

    Macros en Hojas de Clculo Google: rangos, hojas, planillas de clculo[http://hojasdecalculogoogle.blogspot.com.ar/2013/06/macros-en-hojas-de-calculo-google_26.html]Macros en las Hojas de Clculo Google: la interfaz de usuario[http://hojasdecalculogoogle.blogspot.com.ar/2013/06/macros-en-las-hojas-de-calculo-google.html]

    Seguinos en la comunidad en castellano de Hojas de Clculo Google

    [https://plus.google.com/u/0/communities/117381564739239305447]

    Publicado 10th June 2013 por Alejandro Silvestri

    Ms sobre macros

    Ver comentarios