Escribimos scripts para automatizar el trabajo con aplicaciones de Google.

En los años 90 comencé a dominar la programación y mis primeras aplicaciones “comerciales” las escribí en VBA bajo MS Excel. Todavía recuerdo lo conveniente que era trabajar, tener una interfaz lista para usar, funciones para manipulación de datos y celdas direccionables... Esta, en principio, una forma normal de aprender a programar, ahora tiene varias desventajas. En primer lugar, no es bueno asociarse con un entorno propietario para desarrollar y ejecutar código desde las primeras aplicaciones y, en segundo lugar, ¿quién necesita Visual Basic ahora? JavaScript y GoogleDoc son un asunto diferente. Y hay muchas más posibilidades, dada la "interfaz web" del entorno de ejecución y las API abiertas.
Para ayudar a aquellos que estén interesados ​​en la programación "para células", ofrezco aquí una "lección" sencilla sobre cómo crear scripts para Google Spreadsheet.


Creando un guión

Esperemos que ya tengas una cuenta de Google. Inicie sesión en su Google Drive y cree un nuevo documento de hoja de cálculo de Google. Seleccionamos “Herramientas” -> “Editor de scripts” en el menú de nuestro nuevo documento y obtenemos una ventana donde realmente podemos comenzar a programar.
El lenguaje de codificación es JavaScript y el modelo con el que puede trabajar incluye hojas, celdas, rangos y ventanas de E/S para la interacción del usuario.

Escribir código

Función myFunction() (var ss = SpreadsheetApp.getActiveSpreadsheet (); var hoja = ss.getSheets () [0]; var primero = Browser.inputBox ("Primer valor"); hoja.getRange ("A1"). setValue ( "Primer valor:" ); hoja.getRange ("B1") .setValue (primero); var siguiente = Browser.inputBox ("Siguiente valor"); ) ; hoja.getRange("B2") .setValue(siguiente) ; var resultado = hoja.getRange("B1") .getValue() + hoja.getRange("B2") .getValue() ; ("Resultado:"); hoja.getRange ("B3").setValue (resultado); Browser.msgBox ("Summ es:" + resultado);
Aquí todo es bastante sencillo: el objeto SpreadshettApp nos proporciona una instancia del documento del que tomamos la primera hoja. El objeto Navegador nos permite solicitar datos del cliente y decirle algo mediante cuadros de diálogo. Para leer/escribir datos de celda, los obtenemos de la hoja usando el método getRange y luego usamos los métodos getValue/setValue.

Llamando a nuestra función

Hay varias formas de llamar a nuestro script desde Spreadshett. No consideramos inutilizable la opción llamada a través del menú "Herramientas" -> "Administración de scripts".
La opción clásica es comenzar con un botón, haga esto: inserte una imagen en la hoja a través de “Insertar” -> “Dibujo” y luego en el menú de imágenes (que se muestra al hacer clic derecho sobre ella) seleccione “Asignar guión”. En el campo de entrada que aparece, ingrese el nombre de la función.
También puede agregar su propio elemento al menú del documento y hacerlo mediante programación. Agregamos una línea en nuestro script:

Ss.addMenu("Prueba", [(nombre: "Prueba", nombre de función: "miFunción")]);
y lo entendemos.

Hola a todos

Hay muchas opciones para utilizar Google Apps Scripts. Mi amigo trabajaba con un cliente extranjero y me pedía un informe todos los días por correo electrónico con el texto de quién hizo qué. Como resultado, pidió a los empleados que registraran todo en una hoja de cálculo de Google a más tardar a las 21:00, luego se inició el script, recopiló los datos y los envió a la dirección requerida.
En este artículo daré un ejemplo sencillo y, en mi opinión, útil del uso de Google Apps Scripts.

Para acceder mediante programación a los datos de Flurry, siga las instrucciones aquí:
support.flurry.com/index.php?title=API/GettingStarted

Como resultado, recibirá una clave que deberá guardar para usarla en el script.
También necesitarás “ProjectApiKey” de Flurry, que ya utilizas en la aplicación móvil.

Escribiendo un guión

Más precisamente, ya está todo escrito, aquí simplemente describiré cómo iniciarlo.
Siga el enlace y obtenga los textos del script github.com/chapayGhub/flurrymetricstospreadsheet
En el proyecto que creamos antes, necesitamos crear los mismos.

Ahora, después de que todo esté hecho, abra Settings.gs y en él
Introduce tus claves de Flurry
//almacenar credenciales de Flurry FlurryCredentials = (función() ( var obj = (); obj.AccessCode = "?????"; obj.ApiKies = ( iPad: "????", ); return obj; ) )();

Aquí ingresa tu nombre de correo electrónico, preferiblemente de Google (no he revisado otros)
obj.emails = ["???????email1", "?????email2", "?????email3"];

El script está configurado para recibir métricas de la aplicación de Flurry + se enviará una carta a su buzón indicando que ha sido agregado como editor.

Lanzar y depurar

En el panel izquierdo, seleccione el script “CreateStatisticReport”
En el panel superior, cerca del botón con el escarabajo, en la lista desplegable, seleccione "makeStatisticReport"

Ahora todo es sencillo: el panel superior tiene dos "super" botones comprensibles para cualquier programador.

Lanzamiento programado

Sigue los pasos en las imágenes.

Matices

Haga que el script funcione con un documento cada vez
Ejecútelo inmediatamente para ejecución, no para depuración. Se debe crear un documento en la carpeta "Estadística" y se enviarán cartas a su correo electrónico, una de las cuales contendrá el identificador del documento creado.
Asígnelo a una variable ubicada en el script Settings.gs.
obj.mainStatisticDocID
Ahora el script actualizará este documento en particular y no creará uno nuevo cada vez. Si no se ingresa este parámetro, al iniciar el script intenta buscar un documento mediante un identificador inexistente, naturalmente no lo encuentra, lanza una excepción (en la depuración puede haber una parada en este punto de ejecución), pero se detecta esta excepción y se crea un nuevo documento.
Explotación florestal
Utilice el siguiente método
Logger.log("¡TEXTO!");
Para ver el resultado seleccione el siguiente elemento del menú

Necesitar ayuda

El editor del navegador es algo conveniente, pero si el script es más voluminoso, no será muy conveniente trabajar en él.
Este enlace a continuación describe cómo puede cargar y descargar el proyecto.
desarrolladores.google.com/apps-script/import-export

Tuve la idea de escribir un script que recibiera el identificador del proyecto como entrada y lo cargara en el disco local en archivos separados. Estos archivos podrían luego ser refactorizados humanamente y, al final, cargarse nuevamente a través de este script.

Todo parece estar descrito, pero algo no funcionó para mí).

¿Alguien ya ha hecho esto o tiene algún enlace útil? Estaré agradecido.

Campo de golf

Capital a partir de este punto puedes empezar a buscar respuestas a preguntas en Google Apps Scripts.
desarrolladores.google.com/apps-script

PD
Nunca he trabajado con este tipo de servicios y tengo un conocimiento superficial de JavaScript, estaré encantado de recibir comentarios constructivos.

Buenos días, queridos lectores, malhechores, villanos, simpatizantes y otras personalidades. Hoy estamos hablando de Secuencias de comandos de Google, o más bien scripts en tablas como tales.

Creo que muchos de ustedes saben cómo usar Sobresalir"Como o, y algo, tal vez incluso.

Los que usan el disco. Google (Google Drive), probablemente ya haya utilizado Tablas (Hojas de cálculo) y noté que son ligeramente inferiores en funcionalidad a Excel, pero sigue siendo una herramienta poderosa.

Entonces, había macros en Excel. (tipo de comandos que simplifican y automatizan los cálculos), escrito en un idioma notorio Vba (Visual Basic para Aplicaciones). En tablas Google También existen macros, que se denominan scripts y están escritas en el lenguaje JavaScript. Los conoceremos hoy.

Les advierto de antemano sobre la posible complejidad del siguiente ejemplo, porque... No es tanto educativo como... Um... Por así decirlo, el hecho final que puedes usar y... Y desarrollar si esto te resulta familiar.

Hazte una bola de cerebro... Y comencemos :)

Crear una tabla de Google Drive/Scripts y llenarla de contenido

Consideremos este simple problema:
Tenemos dos columnas, en la primera escribimos los nombres de las frutas, y en la segunda el color que corresponde a esta fruta. Y queremos que cuando ingreses un color en la columna de color, el color del nombre de la fruta cambie automáticamente.

Si ha olvidado cómo utilizar los documentos Google, entonces eres bienvenido a leer el correspondiente y ya mencionado anteriormente. Si no lo necesita en absoluto, probablemente no tenga sentido seguir leyendo. Aunque claro, a quién le importa qué :)

Entonces, creemos una nueva tabla. Google, lo llamamos, por ejemplo, " frutas". Bueno, por ejemplo... Teniendo en cuenta que el ejemplo es sobre frutas, entonces... Bueno, ya lo entiendes :)

Ahora agregamos nuestras frutas y colores a la primera hoja:

¡Nota! Para contar frutas, ingrese en la celda. A1 fórmula:

¿Quieres saber y poder hacer más tú mismo?

Te ofrecemos capacitación en las siguientes áreas: informática, programas, administración, servidores, redes, construcción de sitios web, SEO y más. ¡Descubre los detalles ahora!

="fruta("&CONTARA(A2:A)&")"

Ahora creemos una macro. Para hacer esto, vaya al menú " Herramientas"y seleccionar" Gestión de guiones". Aparecerá un menú emergente donde pulsamos en el botón " Crear".

En la ventana que aparece, seleccione " proyecto en blanco".

Se abrirá un editor que a primera vista (e incluso en el segundo) puede causar estupor.

En realidad, ¿qué sigue? Y luego comenzamos a escribir nuestras propias macros a mano. (sí, todo por tu cuenta).¿Cómo será nuestra macro? Necesitas hacer un diagrama de este proceso. (de lo contrario, este proceso te llevará mucho tiempo).

Necesitamos:

  1. Obtenga los valores de color de la segunda columna;
  2. De acuerdo con estos valores, establezca colores para la primera columna.

Entonces... Todo parece sencillo... Si sabes hacerlo, claro :)

wCodificación

Pasemos al código en sí:

Función onOpen() ( var hoja = SpreadsheetApp.getActiveSpreadsheet(); var entradas = [(nombre: "Color", nombre de función: "MakeMeHappy")]; hoja.addMenu("Scripts", entradas); ); función MakeMeHappy())( var hoja = SpreadsheetApp.getActiveSpreadsheet(); var rango = hoja.getActiveRange(); var datos = range.getValues(); if(range.getColumn() == 2)( para (var i= 0 ;yo< data.length;i++){ range.offset(i,-1,1,1).clearFormat(); range.offset(i,-1,1,1).setHorizontalAlignment("center"); range.offset(i,-1,1,1).setVerticalAlignment("center"); switch (data[i]){ case "зеленый": case "Зеленый": range.offset(i,-1,1,1).setFontColor("#00dd00"); break; case "салатовый": case "Салатовый": range.offset(i,-1,1,1).setBackgroundColor("#87dd47"); break; case "желтый": case "Желтый": range.offset(i,-1,1,1).setBackgroundColor("#ffff00"); break; case "оранжевый": case "Оранжевый": range.offset(i,-1,1,1).setFontColor("#dd7711"); break; case "красный": case "Красный": range.offset(i,-1,1,1).setFontColor("#dd0000"); break; case "фиолетовый": case "Фиолетовый": range.offset(i,-1,1,1).setFontColor("#800080"); break; default: break; } } } };

Ahora intentaré explicártelo. Función abierto agrega menú " Guiones" a la mesa al abrirla. Y se ve así:

Ahora para el código:

Hoja var = SpreadsheetApp.getActiveSpreadsheet();

Esta línea se suma a la variable. hoja identificador del documento que abrimos, para que luego podamos usarlo para acceder al documento.

Entradas var = [(nombre: "Paint", nombre de función: "MakeMeHappy")]);

Esta variable de matriz contiene una lista de nombres de menú y funciones que se realizan cuando se hace clic en estos menús.

Sheet.addMenu("Scripts", entradas);

Este método agrega un menú a nuestro documento " Guiones".

Función Hazme feliz, de hecho, esta será nuestra función principal, la que da color a las frutas.
Primero declaro las variables:

Hoja var = SpreadsheetApp.getActiveSpreadsheet(); rango var = hoja.getActiveRange(); var datos = rango.getValues();

Así, en la variable hoja es el identificador de nuestro documento. en variables rango se ubica el área que hemos seleccionado (por ejemplo, celdas B2:B6), en la variable datos Los valores de estas celdas se encuentran en forma de matriz.

Si(rango.getColumn() == 2)(...)

En esta condición, verificamos que el rango de celdas seleccionado coincida con la segunda columna (que contiene los colores de las frutas).

Para (var i=0;i< data.length;i++){...}

En este bucle recorremos cada celda del rango. B2:B

Range.offset(i,-1,1,1).clearFormat(); range.offset(i,-1,1,1).setHorizontalAlignment("centro"); range.offset(i,-1,1,1).setVerticalAlignment("centro");

Estas tres propiedades eliminan el formato de celda. Ai](Por ejemplo, A1, A2, A3 etc., porque estamos dentro del bucle), y también centrar los valores en la celda vertical y horizontalmente.

Aquí hay que tener en cuenta que desde nuestra gama coincide segundo columna ( B2:B), y necesitamos eliminar el formato y centrar primero columna, entonces el método se utiliza para esto compensar(rango número de fila, número de columna, número de filas, número de columnas). Por ejemplo, el método rango.compensación(0,1,4,3) para celda B2(aquellos. rango corresponde B2:B2) significará que no actuaremos sobre la célula B2:B2, y para el rango [ B+ 1][ 2 + 0]:[ EN+ 3][ 2 + (4 -1)] = C2:E5. Para más detalles, ver.

Switch (data[i])( case "green": case "Green": range.offset(i,-1,1,1).setFontColor("#00dd00"); break; case "light green": case " Verde claro ": range.offset(i,-1,1,1).setBackgroundColor("#87dd47"); break; ... )

Función cambiar es el llamado interruptor. Mira el valor de una variable y, de acuerdo con lo que está almacenado en ella, cumple una determinada condición" caso". Puedes reescribirlo en forma estándar. si no. Pero será muy inconveniente. Por ejemplo:

Cambiar (c)( caso 1: condición_1; interrupción; caso 2: condición_2; interrupción; caso 3: condición_3; interrupción; predeterminado: condición_4; interrupción; )

Será equivalente a la función:

Si (c == 1) condición_1; de lo contrario si (c == 2) condición_2; de lo contrario si (c == 3) condición_3; otra condición_4;

Porque puede ingresar un color tanto con mayúscula como con minúscula, luego necesitamos dos condiciones cada una, que corresponde a la entrada caso "verde": caso "Verde": acción; romper; (Tengo esto escrito en una estructura de bloques). Debes tener en cuenta que después de cada acción debes escribir una función. romper; porque de lo contrario cumpliremos todas las condiciones en orden, y no la que necesitamos. Condición por defecto Se utiliza cuando no existe una condición adecuada para nuestra variable.

Range.offset(i,-1,1,1).setFontColor("#00dd00");

Métodos establecerColorDeFuente Y establecerColor de fondo establecer el texto y los colores de fondo en el formulario #rrggbb (r-rojo, g-verde, b-azul, gamas de colores) respectivamente.

Ahora revisemos la función. Seleccionando un rango B2:B9, ve al menú " Guiones" y seleccione la opción " Pintar". Veamos cómo nuestros frutos han adquirido vida de color :)

En general, eso es todo. Pero no realmente.

Macros y secuencias de comandos de hojas de cálculo de Google, complemento

Pero puedes hacer una pequeña adición para no tener que ejecutar las funciones manualmente cada vez.

Para hacer esto, vaya al menú en el editor de scripts " Recursos"y seleccione allí" Activadores actuales del proyecto". Se abrirá un menú en el que ya estará nuestra función. en carga. Agregar una nueva función (1 ) y establezca el nombre de la función (2 ) y el tipo de activación del mismo (3 ). También puedes hacer clic en " Notificaciones" y agregue/elimine su dirección de correo electrónico de la lista de notificaciones.

Vendrán si el script se ejecutó con errores.

El resultado final de la acción:

Continuaciones - -estamos preparando tres. Bueno, los comentarios ciertamente contienen muchas cosas sabrosas.

PD Por la existencia de este artículo, un agradecimiento especial a un amigo del proyecto y miembro de nuestro equipo bajo el sobrenombre de “barn4k”.




Arriba