Clase google.script.run (API del cliente)

google.script.run es una API de JavaScript asíncrona del lado del cliente disponible en páginas de servicios HTML que puede llamar a funciones de Apps Script del servidor. Para interactuar con diálogos o barras laterales en Documentos, Hojas de cálculo o Formularios de Google desde el código del cliente, usa google.script.host. Si deseas obtener más información, consulta la guía para comunicarte con las funciones del servidor en el servicio HTML.

Métodos

MétodoTipo de datos que se muestraDescripción breve
myFunction(...) (cualquier función del servidor) void Ejecuta la función Apps Script del servidor con el nombre correspondiente.
withFailureHandler(function) google.script.run Configura una función de devolución de llamada para que se ejecute si la función del lado del servidor genera una excepción.
withSuccessHandler(function) google.script.run Configura una función de devolución de llamada para que se ejecute si la función del servidor se muestra correctamente.
withUserObject(object) google.script.run Configura un objeto para pasarlo como un segundo parámetro a los controladores de éxito y falla.

Documentación detallada

myFunction(...) (cualquier función del servidor)

Ejecuta la función Apps Script del servidor con el nombre correspondiente.

Code.gs

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}

function doSomething() {
  Logger.log('I was called!');
}

Índice html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      google.script.run.doSomething();
    </script>
  </head>
  <body>
  </body>
</html>

Parámetros

NombreTipoDescripción
...La mayoría de los tipos son legales, pero no Date, Function ni el elemento DOM además de form; consulta la descripciónLos parámetros legales son primitivos de JavaScript, como Number, Boolean, String o null, así como arreglos y objetos de JavaScript compuestos por primitivos, objetos y arreglos. Un elemento form dentro de la página también es legal como parámetro, pero debe ser el único parámetro de la función. Las solicitudes fallan si intentas pasar un elemento Date, Function, DOM además de un form o algún otro tipo prohibido, incluidos los tipos prohibidos dentro de objetos o arreglos. Los objetos que crean referencias circulares también fallarán y los campos no definidos dentro de los arreglos se convertirán en null. Ten en cuenta que un objeto que se pasa al servidor se convierte en una copia del original. Si una función del servidor recibe un objeto y cambia sus propiedades, las propiedades del cliente no se verán afectadas.

Volver

void: Este método es asíncrono y no se muestra directamente; sin embargo, la función del servidor puede mostrar un valor al cliente como un parámetro que se pasa a un controlador de éxito; además, los tipos de datos que se muestran están sujetos a las mismas restricciones que los tipos de parámetros, excepto que un elemento form no es un tipo de datos que se muestra legal


withFailureHandler(function)

Configura una función de devolución de llamada para que se ejecute si la función del lado del servidor genera una excepción. El objeto Error se pasa a la función como el primer argumento y el objeto de usuario (si existe) como segundo argumento. Sin un controlador de fallas, las fallas se registran en la consola de JavaScript. Para anular esto, llama a withFailureHandler(null) o proporciona un controlador de fallas que no haga nada.

Code.gs

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}

function getUnreadEmails() {
  // 'got' instead of 'get' will throw an error.
  return GmailApp.gotInboxUnreadCount();
}

Índice html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function onFailure(error) {
        var div = document.getElementById('output');
        div.innerHTML = "ERROR: " + error.message;
      }

      google.script.run.withFailureHandler(onFailure)
          .getUnreadEmails();
    </script>
  </head>
  <body>
    <div id="output"></div>
  </body>
</html>

Parámetros

NombreTipoDescripción
functionFunctionuna función de devolución de llamada del lado del cliente para ejecutarse si la función del servidor genera una excepción; el objeto Error se pasa a la función como el primer argumento y el objeto del usuario (si existe) se pasa como el segundo argumento;

Volver

google.script.run: Este "corredor de secuencia de comandos" para encadenar


withSuccessHandler(function)

Configura una función de devolución de llamada para que se ejecute si la función del servidor se muestra correctamente. El valor de retorno del servidor se pasa a la función como el primer argumento y el objeto de usuario (si existe) como segundo argumento.

Code.gs

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}

function getUnreadEmails() {
  return GmailApp.getInboxUnreadCount();
}

Índice html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function onSuccess(numUnread) {
        var div = document.getElementById('output');
        div.innerHTML = 'You have ' + numUnread
            + ' unread messages in your Gmail inbox.';
      }

      google.script.run.withSuccessHandler(onSuccess)
          .getUnreadEmails();
    </script>
  </head>
  <body>
    <div id="output"></div>
  </body>
</html>

Parámetros

NombreTipoDescripción
functionFunctionuna función de devolución de llamada del lado del cliente para ejecutarse si la función del servidor se muestra correctamente; el valor de retorno del servidor se pasa a la función como el primer argumento y el objeto del usuario (si existe) se pasa como el segundo argumento;

Volver

google.script.run: Este"corredor de secuencia de comandos"para encadenar


withUserObject(object)

Configura un objeto para pasarlo como un segundo parámetro a los controladores de éxito y falla. Este objeto de usuario (que no debe confundirse con la clase User) permite que las funciones de devolución de llamada respondan al contexto en el que el cliente se contactó con el servidor. Debido a que los objetos de usuario no se envían al servidor, no están sujetos a las restricciones sobre los parámetros y los valores mostrados para las llamadas al servidor. Sin embargo, los objetos de usuario no pueden ser objetos construidos con el operador new.

Code.gs

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}

function getEmail() {
  return Session.getActiveUser().getEmail();
}

Índice html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function updateButton(email, button) {
        button.value = 'Clicked by ' + email;
      }
    </script>
  </head>
  <body>
    <input type="button" value="Not Clicked"
      onclick="google.script.run
          .withSuccessHandler(updateButton)
          .withUserObject(this)
          .getEmail()" />
    <input type="button" value="Not Clicked"
      onclick="google.script.run
          .withSuccessHandler(updateButton)
          .withUserObject(this)
          .getEmail()" />
  </body>
</html>

Parámetros

NombreTipoDescripción
objectObjectUn objeto que se pasará como segundo parámetro a los controladores de éxito y falla. Debido a que los objetos de usuario no se envían al servidor, no están sujetos a las restricciones sobre parámetros y valores de retorno para las llamadas al servidor. Sin embargo, los objetos de usuario no pueden ser objetos creados con el operador new

Volver

google.script.run: Este"corredor de secuencia de comandos"para encadenar