Como comunicar JavaScript con Google Apps Script

Una de las cosas más potentes que podemos hacer con Google Apps Script es comunicar una web que hemos servido de un spreadsheet  con nuestro código Google Apps Script que tenemos en el lado del servidor. Esto lo podemos hacer gracias a que javascript puede llamar a funciones del lado de servidor.

La forma de hacerlo es sencilla, aquí tenéis un ejemplo de un proyecto que hice hace un tiempo:

google.script.run.withSuccessHandler(ReciveList).AskForList();

1. Este código se ha de usar dentro del javascript. 

2. AskForList es una función de Google Apps Script (servidor) a la que llamaremos desde javascript ( cliente )

function AskForList()
{
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheeturl = spreadsheet.getActiveSheet();
  var images   = sheeturl.getRange(1,1,sheeturl.getLastRow(), 1 ).getValues();

  var elements = new Array();
  for(var i = 1 ; i < images.length ; ++i)
  {
      var url = images[i][0];
      var element = new Object();
      element.url    = url;
      elements.push(element);
  }
  return elements;
}

Esta función puede tener parámetros o no, de forma que podemos llamar a funciones de Google Apps Script con parámetros de datos obtenidos en el HTML ( formularios por ejemplo ), sin ningún tipo de problema.

3. ReciveList es una función de javascript (cliente ) que recoge la respuesta de Google Apps Script ( servidor ).

function ReciveList(list)
{
   //Aqui hacemos lo que queremos con la info que nos devuelve el Google Apps Script         
}

function AskForList()
{
google.script.run.withSuccessHandler(ReciveList).AskForList();
}

Es decir, desde el cliente llamamos a una función del servidor que nos devuelve un contenido que podemos usar en la parte del cliente. Las posibilidades que esto implica son inacabables.

Podemos enviar y recibir a la parte del servidor lo que queramos.

Resumiendo: Con esto, podemos dar información de las acciones del cliente a nuestro spreadsheet, o hacer peticiones al servidor de datos o lo que fuera que necesitemos  mostrar en la web.

Que quede claro que en este flujo de trabajo no está contemplado que la parte del servidor pueda unilateralmente enviar información al cliente, siempre es el cliente ( la web ) quien ha de hacer la petición al servidor ( Google Apps Script)

Es un tema complejo pero extremadamente potente. no dudéis en hacerme todas las preguntas que necesitéis.

Espero que os sirva

Nos vemos








4 comentarios:

  1. No me queda del todo claro, faltaría un ejemplo con una spreadsheet.
    Que debería poner en filldata y en los demás campos.

    ResponderEliminar
  2. Hola. Puede GAS enviar 2 parámetros a JavaScript en una misma función? Ejemplo:
    function getPrueba(){
    let a=5;
    let b=10;
    return a,b;

    }

    ResponderEliminar
    Respuestas
    1. Nope. tal como tu lo explicas no. Sino voy equivocado lo que te serviria seria que puedes devolver arrays y jsons que a efectos practicos son contenedores de tantos datos necesites. Espero que te haya ayudado. Nos vemos!

      Eliminar

Tal vez te interese