Leyendo datos desde una API en planillas de Google

Cuando trabajamos con planillas en la nube tenemos la posibilidad de leer datos desde nuestro sistema de gestión para tener la planilla sincronizada a la realidad de la operación.

Por ejemplo podemos traer la facturación, compras o costos de RRHH de nuestra empresa analizando los números en tiempo real, día a día sin esperar reportes manuales que pueden y suelen tener errores (olvidos, cambios en el formato, etc.).

Para lograr esto podemos utilizar App Scripts en las planillas de Google para leer una API. En el menú superior: Herramientas > Editor de secuencia de comandos

Vamos a definir una función auxiliar para llamadas a APIs externas que responden con JSON:

// Llamada a API externa
function getApiData(url,query) {

try {
var response = UrlFetchApp.fetch(url);
var responseData = response.getContentText();
var json = JSON.parse(responseData);
return json;
}
catch (e) {
Logger.log(e);
return [«Error:», e];
}
}

El código quedará mas o menos así:

Con esto tenemos una función auxiliar para llamadas a APIs externas que responden con formato JSON.

Para ver la demo completa ver la siguiente planilla:

Demo1 nrm.uy – Leer API
https://docs.google.com/spreadsheets/d/1ap2IQeQ73049NE6lj_oRDBFQ-Wjz0GDiZoXPkFf-a4I/

Código en Github del proyecto:
https://github.com/nrodriguezm/app-scripts-demo/blob/master/demo1-api-menu-toast/Code.js

 

 

 

Comercio, apertura global y productividad

El siguiente podcast es una interesante discusión acerca de qué impactos tiene sobre las sociedades que se abren al comercio.

Se discute el ejemplo de la apertura China a finales de los 90 con la explosión comercial desde y hacia los Estados Unidos, el aumento nñinimo de la productividad de la fuerza laboral norteamericana y los incentivos que genera en la innovación.

Relacionado al tema de por qué la antigua Roma no desarrollo una revolución industrial, cuando sus indicadores económicos en general eran comparables a los siglos 16 y 17 de Europa, se plantea que la entrada de China al mercado mundial generó una enorme presión por migrar la producción hacia una fuerza laboral barata e ilimitada en lugar de continuar el desarrollo de la productividad.

Llegando a finales de la segunda década del siglo XXI, la sociedad China ha elevado sus estándares de vida a niveles comparables a Occidente por lo que el incentivo de la fuerza laboral gratuita e ilimitada dejan de ser válidos y se debería volver a trabajar sobre la productividad.

A su vez se plantea que el modelo de comercio aperturista de los 80 y 90 provocó un error en las consecuencias supuestas por la apertura comercial de los años 2000, ya que la entrada de un pais pobre como China y de una escala mucho mayor al principal mercado (USA) no tenia precedentes.

a16z Podcast: Adjusting to Trade… and Innovation

 

 

Automatización en Excel

El 99% de las personas utilizamos Excel muy por debajo de sus capacidades.

Algunos conceptos fundamentales para ser más productivos:

  1. Si estas haciendo cuentas fuera de la planilla (si, te hablo a vos calculadora de mesa…) estas siendo ineficiente.
  2. Si no tenes una hoja de Datos o Supuestos donde se definen los parametros fijos o mensuales vas a trabajar el triple.
  3. Si no sabes usar tablas dinamicas te estas perdiendo la mitad de la diversión.

Un par de tips muy interesantes son:

Cómo unificar varias planillas en una sola

Colocar en un directorio todas las planillas separadas que queremos unificar, por ejemplo los informes de cada mes. Crear un nuevo archivo de cero, grabarlo fuera del directorio donde tenemos los archivos individuales y guardarlo como Excel con macros, tipo de extension xlsm.

Si no respetan esos dos detalles de ubicacion y tipo de archivo, no va a funcionar.

En el archivo nuevo, vamos a la parte de desarrollador, seguramente tengan que habilitar el menú la primera vez en Arcivo > Opciones > Customizar y agregar la vista de Desarrollador.

En el cuadro de código pegar lo siguiente, sustituyendo la ruta por la del directorio donde colocaron los archivos separados y colocando la extesion que corresponda (xls o xlsx o csv):

Sub GetSheets()
    Const THE_PATH As String = "C:\RUTA\ARCHIVOS\SEPARADOS\"

    Dim Filename as String, wb As Workbook, Sheet As Worksheet

    Filename = Dir(THE_PATH  & "*.xls")
    Do While Filename <> ""
         Set wb = Workbooks.Open(Filename:=THE_PATH & Filename, ReadOnly:=True)
         For Each Sheet In wb.Sheets
             Sheet.Copy After:=ThisWorkbook.Sheets(1)
         Next Sheet
         wb.Close
         Filename = Dir()
      Loop
End Sub

Recuerden, deben cambiar la ruta manteniendo la \ al final y deben colocar la extension correcta.

Si el archivo no se guardo como xlsm no van a poder ejecutar el codigo.

Luego hacen clic en el boton de play y listo.

Tip para curiosos, conocer las planillas de Google Drive y utilizar IMPORTRANGE. No precisan unificar mas archivos…

¿Por qué no hubo una revolucion industrial en la antigua Roma?

Una de las grandes interrogantes en la historia económica es que tan cerca de tener una revolución industrial estuvieron los romanos.

Se sabe que entre los años 100 AC y 400 BC la antigua Roma contaba con las bases para dar los primeros pasos de una revolución industrial, con el motor a vapor entre los escritos de varios inventores romanos, al menos en modelos a pequeña escala en el siglo I.

Es cierto que otras tecnologías necesarias para poder producir motores industriales no parecen haber estado disponibles en la época por lo que la aplicación industrial de los mismos es cuestionable.

De toda formas, ¿pudo haber sido la disponibilidad de mano de obra a costo cero e ilimitada mediante la expansión del imperio y la esclavitud la razón por la que medios de producción industriales no fueron explorados? Hay que tener en cuenta que una cantidad importante de indicadores económicos y de estándares de vida durante el Imperio Romano no se volverían a ver hasta mil años después de su caída.

Hoy que vivimos en una época donde es normal pensar que vamos a tener mejor tecnología que nuestros padres no concebimos sociedades que declinen durante siglos. Esto también es una de los puntos para entender el rol de la iglesia luego de la caída del orden romano.

Estos son algunos de los puntos analizados por el siguiente artículo de Mark Komaya:

https://fee.org/articles/why-rome-declined-and-modern-europe-grew/

 

Productividad y gestión del tiempo – Parte I

Gestión del tiempo (Time Management)

Urgente/Importante/Relevante. Priorizar: Eliminar, Automatizar, Delegar.
Lucha contra el Ego, capacitacion y documentacion.

Cuando no tenemos foco en las prioridades tratamos de hacer todo y no tenemos el tiempo que necesitamos.

Las horas que necesitamos estan atrapadas en este cambio constante de foco.

Practica, poner todas las cartas sobre la mesa en equipo.

Priorizar negociando las prioridades de corto y mediano plazo.

Agrupar por areas de trabajo, asignar responsable, fecha estimada de entrega y proximo paso para cada una de las prioridades.

Todo lo que requiere mas de un paso debe ser ampliado y especificado. Si es una tarea trivial hay que hacerla de una vez.

Productividad y el impacto humano

En Uruguay estamos en epocas de presupuesto y negociación salarial, por lo que la conflictividad está por las nubes, la más alta desde 1995.

Conflictividad laboral Uruguay 2015

Este problema esta presente en todo el mundo, basta ver la comparativa entre puertos del primer mundo como Rotterdam vs Oakland (San Francisco) donde el primero es un 80% mas productivo que el segundo. En Oakland y el resto de puertos de la costa oeste por el año 1970 con la introducción del contenedor hubo grandes conflictos y la nueva generación de automatismos promete generar nuevos conflictividad con el aumento de prductividad.

Resulta interesante ver como las situaciones de desplazamiento de la fuerza laboral no es un problema actual, ya pasamos por enormes migraciones de la fuerza de trabajo, está por verse si la introducción de las tecnologías de la información a la industria tiene una velocidad de impacto diferente o es una transición mas de las ya vividas.

 

Drones no tripulados para la industria y seguridad

Seguramenten en los próximos años comencemos a ver vehiculos autónomos (sin piloto o pilotado por computadora) en las calles de las ciudades del mundo, en algunas tal vez en no más de un año o dos.

Otras áreas que pueden tener un gran impacto en nuestras vidas gracias al manejo autónomo son algunas tan dispares como industrias de la construcción, turismo y seguridad.

En todas estas áreas son infinitas las aplicaciones imaginables para flotas automatizadas de drones que permitan tener supervisión y hasta traslado de objetos livianos en un comienzo.

Imaginar rondas de seguridad de drones durante las 24 horas con flotas coordinadas no parece raro, dando ojos móviles a los centros de monitore. Incluso para trabajos en catastrofes naturales y escenarios de violencia.

Un área que parece estar en fila a continuación del transporte y la medicina para ser revolucionada por el software es la construcción, ya se pueden ver algunos experimentos relacionados al uso de drones:

http://www.idsc.ethz.ch/research-dandrea/research-projects/aerial-construction.html

<iframe width=»560″ height=»315″ src=»https://www.youtube.com/embed/CCDIuZUfETc» frameborder=»0″ allowfullscreen></iframe>

NYC, educación en información uinversal

El día de ayer se anunció en la ciudad de Nueva York que se planea tener acceso universal en la educación pública en ciencias de la computación a todo nivel.

http://www1.nyc.gov/office-of-the-mayor/education-vision-2015-computer-science.page

La capacidad de pensar en el modelado de ideas y como instruir a una máquina para que haga el trabajo parece ser el nuevo mínimo educativo en la sociedad de la información. Las sociedades que no den acceso universal al siguiente nivel de educación se van a encontrar probablemente con una población equivalente a que en la actualidad no sepan leer y escribir.

Internet accesible desde los dispositivos móviles ha comenzado su etapa de instalación en todos los ámbitos de la vida, por lo que su impacto actual es insignificante comparado a lo que veremos en un par de décadas.

Situaciones como un chofer programando su recorrido o un administrativo utilizando un sistema de gestión para generar informes automatizados empiezan a ser cosa de todos los dias lo cual requiere la capacidad de abstraer la situación particular a la que se enfrenta para modelar la idea de forma que un sistema puede ejecutarla.

Primero fue la escritura, nos permitió recordar en forma nítida.
Luego la lógica, nos permitió pensar en como pensamos.Ahora el software, nos permite pensar a cualquier escala.

 

Uso de energías renovables en Uruguay

En estos dias se esta dando un hecho histórico para Uruguay, alcanzar el 100% de la generación de energía eléctrica con recursos renovables.

Consultando la web de UTE se puede ver que se llego al 99.1.%:

energias renovables uruguay

Fuente: http://portal.ute.com.uy/novedad/suministro-la-demanda

Cabe destacar que esta situación se alcanzó con una generación muy baja de energía solar, la cual recién comienza a instalarse en Uruguay. Viendo que la energía eólica tuvo un crecimiento muy fuerte desde 2014 a la fecha, alcanzando una producción de 300 a 400 MW al día de hoy y especialmente concentrada en la noche y mañana, parece complementar en forma ideal a la fotovoltaica que genera su mayor capacidad al mediodia y tarde.

Según la memoria anual la energía eólica estaba en 65GWh en 2013, paso a 112 en 2014 y 2015 parece ser un nuevo año de fuerte crecimiento con parques aun en construcción.

La fotovoltaica recién es incipiendo con 1GWh en 2014.

Es interesante pensar en que si la eólica aún tiene espacio para crecer y la fotovoltaica recién comienza, podremos exportar energía a la región o bien comenzar a sustituir los combustibles para el transporte por energía eléctrica como en el caso de los taxis que estarían comenzando en breve con vehículos marca BYD.

 

Crear y modificar extension de Chrome

Como parte de la construcción de una guía de trabajo para mejorar la productividad, comunicación y efectividad de equipos de mandos medios y altos, me surgió la necesidad de utilizar una herramienta de colaboración como Asana.

Un detalle que puede ser una barrera de entrada para la implementación es que se encuentra en inglés y no cuenta con traducción al español.

Este tipo de herramientas suelen cargar con la responsabilidad de lograr que las personas hagan mejor las cosas que no están haciendo bien, lo cual es parte del problema de baja efectividad y comunicación.

La herramienta es solo un espejo en el que nos miramos y refleja nuestra actitud hacia los problemas que enfrentamos.

El software es un multiplicador de nuestra capacidad. Si nuestro nivel de colaboración es cero no hay multipicador que nos haga dar resultados.

A su vez, elegir Asana es irrelevante, se podría usar Redbooth, Trello entre otras las cuales son alternativas totalmente válidas. En organizaciones donde la comunicación está fragmentada cualquiera de estas herramientas cuenta con potencial de sobra para lograr un impacto enorme.


Volviendo a la razón inicial de este post, queremos traducir Asana para evitar una barrera de entrada con usuarios que puedan tener dificultades con el idioma. De esta forma ya que vamos a trabajar con usuarios que deben cambiar su forma de trabajo y comunicación en forma radical, evitamos una barrera adicional con el idioma.

Para esto vamos a ampliar una extensión ya existente para Asana:
https://github.com/ajimix/asana-translate-chrome/

Creada por ajimix: https://twitter.com/ajimix

Algunos terminos se encuentran traducidos pero otros no ya que no ha sido actualizada en un tiempo. Encontraremos textos en español pero la mayoría en inglés.

asana-traduccion-spa

Lo que sucede es que ha medida que se ha actualizado Asana no se han actualizados los reemplazos en el HTML por parte de la extensión para Chrome.

Lo que debemos hacer es descargar el código de la extensión y modificarlo, vamos a github y la descargamos:

asana-traduccion-spa-github

El siguiente paso es descomprimir el zip y veremos la estructura con los siguientes directorios y archivos:

  • locales: donde se encuentran los idiomas
  • assets: imagenes y JS que debemos modificar, dentro de assets/js el archivo translate.js
  • manifest.json: declaración de la extensión

Para trabajar con la extensión a medida que agregamos las traducciones faltantes lo que debemos hacer es agregar la extensión en forma descomprimida desde el zip descargado.

  1. Vamos a Chrome e ingresamos en la barra de direcciones: chrome://extensions/
  2. Activamos el modo desarrollador y hacemos clic en Cargar extensión descomprimida.
  3. Seleccionamos la carpeta que descomprimimos del zip.
  4. Vamos a la web de Asana y recargamos.

asana-traduccion-spa-modo-desarrollador

En este punto tenemos la extensión tal cual estaba en github, es decir desactualizada.

El siguiente paso será ir buscando cada texto a traducir con el inspector de código e ir agregando las traducciones que sean necesarias.

Por ejemplo para traducir el texto ¨My Tasks¨ en la barra superior usamos el inspector y encontramos la clase que identifica este elemento.

asana-traduccion-spa-modo-traducir

En este caso es la clase ¨topbar-myTasksButton¨.

Ahora debemos ir al archivo JS donde se definen los elementos a traducir y buscar si ya existe. Vamos a ver que el mismo no existe aun.

asana-traduccion-spa-modo-string

En este caso debemos agregarlo usando la clase que vimos identifica al elemento, en otros casos puede ser necesario usar un id (#) en lugar de una clase (.).

asana-traduccion-spa-modo-string-traducido

Por último vamos al archivo locale para español (es), en este caso vamos a usar el texto ya traducido para MyTasks, si el mismo no hubiera existido lo agregamos.

asana-traduccion-spa-modo-string-traducido2

Una vez modificados los archivos y grabados, vamos a Chrome, borramos la extensión y la agregamos de nuevo desde la carpeta descomprimida.

Actualizamos la web de Asana y deberiamos ver la traduccion aplicada.

asana-traduccion-spa-modo-string-final