Cómo leer parametros de la URL con Google Apps Script

Hace poco un compañero preguntaba si era posible que un script  de GAS modificara su comportamiento a través de la URL usada. La respuesta es fácil, si, usando parámetros por URL.

Los parámetros se envían al script con ?nombre_param=valor_param al final de la URL

Dentro del código lo único que hemos de hacer es aceptar un parámetro en el doGet(e) y recoger el parámetro con la sintaxis e.parameter.nombre_param.

Con un ejemplo os quedará mucho más sencillo. Me he basado en el ejemplo de una web dinámica para hacer que en función del parámetro que se le pase en la URL use un html u otro.

index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
 
    <script>
    function Response(string)
    {
       document.getElementsByName("ejemplo")[0].innerHTML = string;
    }

    function InitWeb()
    {
       google.script.run.withSuccessHandler(Response).Init();
    }
    </script>

  </head>
  <body>
    <h1>
    INDEX
    </h1>

    <script>
        InitWeb();
    </script>

<div name='ejemplo'>
    <p> Loading.... wait</p>
</div>

  </body>
</html>


index2.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    
    <script>
    function Response(string)
    {
       document.getElementsByName("ejemplo")[0].innerHTML = string;
    }
  
    function InitWeb()
    {
       google.script.run.withSuccessHandler(Response).Init();
    }
    </script>

  </head>
  <body>
    <h1>
    INDEX2
    </h1>

    <script>
        InitWeb();
    </script>
  
<div name='ejemplo'>
    <p> Loading.... wait</p>
</div>

  </body>
</html>

Código gs
function Init()
{
  var spreadsheet  = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1NA63mUiiG_ce3crX3PU_ISp8HwuwyKGRslqn2kyEYQM/edit#gid=0");  //Esta ruta será la que tengas a tu fichero que uses como BBDD
  var sheet        = spreadsheet.getActiveSheet();
  var rows         = sheet.getDataRange();
  var numRows      = rows.getNumRows();
  var values       = rows.getValues();
  var string = "";

  for(var i = 0 ; i < numRows ; ++i)
  {
    var row = values[i];
  
    string += "<p>" + row[0] + "</p>";
  
  }

  return string;
}

//Retorna la página principal en función del parámetro param que se le pase en la URL
function doGet(e)
{
   return HtmlService.createHtmlOutputFromFile(e.parameter.param);
 }

Una vez tengáis el código copiado deberéis implementarlo como aplicación web:


La ruta que os salga en la ventana de implementación web será la ruta en la que deberéis añadir vuestro parámetro.

Aquí os dejo los links de como queda:

Cualquier duda ya lo sabéis, espero que os haya gustado.

Nos vemos


2 comentarios:

  1. Saludos, muy interesante tu código, pero creo que se requiere un vídeo, ...no se a que parámetro te refieres para que funcione

    ResponderEliminar
    Respuestas
    1. Hace tiempo que le estoy dando vueltas a hacer un canal para explicar mejor los artículos, lo que nunca tengo el tiempo para ponerme.

      Deberé dar el paso algún dia.... gracias por comentarlo.

      Respecto al parametro tu en una url puedes ponerle parametros a fin de tener una web dinamica.

      Estos parametros se introducen con un simbolo "?" seguido del parametro:

      https://www.tu-url-muy-profesional.com?nombre_param=valor_param

      Espero haberte ayudado.

      Nos vemos

      Eliminar

Tal vez te interese

Entradas populares