Method: scripts.run

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Ejecuta una función en un proyecto de Apps Script. El proyecto de secuencia de comandos debe implementarse para usarse con la API de Apps Script y la aplicación que realiza la llamada debe compartir el mismo proyecto de Cloud Platform.

Este método requiere autorización con un token de OAuth 2.0 que incluya al menos uno de los alcances enumerados en la sección Authorization; los proyectos de secuencia de comandos que no requieren autorización no se pueden ejecutar mediante esta API. Para encontrar los alcances correctos que se incluirán en el token de autenticación, abre la página Descripción general del proyecto de secuencia de comandos y desplázate hacia abajo hasta "Proyectos Alcance de OAuth".

El error 403, PERMISSION_DENIED: The caller does not have permission indica que el proyecto de Cloud Platform que se usó para autorizar la solicitud no es el mismo que usa la secuencia de comandos.

Solicitud HTTP

POST https://script.googleapis.com/v1/scripts/{scriptId}:run

La URL usa la sintaxis de la transcodificación gRPC.

Parámetros de ruta de acceso

Parámetros
scriptId

string

El ID de la secuencia de comandos que se ejecutará. Busca el ID de la secuencia de comandos en la página de configuración del proyecto, en "ID".

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Representación JSON
{
  "function": string,
  "parameters": [
    value
  ],
  "sessionState": string,
  "devMode": boolean
}
Campos
function

string

El nombre de la función que se ejecutará en la secuencia de comandos determinada. El nombre no incluye paréntesis ni parámetros. Puede hacer referencia a una función en una biblioteca incluida, como Library.libFunction1.

parameters[]

value (Value format)

Los parámetros que se pasarán a la función que se está ejecutando. El tipo de objeto para cada parámetro debe coincidir con el tipo esperado en Apps Script. Los parámetros no pueden ser tipos de objetos específicos de Apps Script (como Document o Calendar); solo pueden ser tipos primitivos como string, number, array, object o boolean. Opcional.

sessionState

string

Obsoleto.. Solo para uso con complementos de Android. Un ID que representa la sesión actual del usuario en la aplicación para Android para Hojas de cálculo o Documentos de Google, y que se incluye como datos adicionales en el Intent que inicia el complemento. Cuando un complemento de Android se ejecuta con un estado de sesión, obtiene los privilegios de una secuencia de comandos vinculada, es decir, puede acceder a información como la posición actual del cursor (en Documentos) o la celda seleccionada (en Hojas de cálculo) del usuario. Para recuperar el estado, llama a Intent.getStringExtra("com.google.android.apps.docs.addons.SessionState"). Opcional.

devMode

boolean

Si true y el usuario es propietario de la secuencia de comandos, esta se ejecuta en la versión guardada más reciente, en lugar de la versión implementada para su uso con la API de Apps Script. El valor predeterminado es false.

Cuerpo de la respuesta

Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:

Una representación de una ejecución de una función de Apps Script que comienza con run La respuesta de ejecución no llega hasta que la función termina de ejecutarse. El entorno de ejecución máximo se muestra en la guía de cuotas de Apps Script.

Una vez iniciada la ejecución, puede tener uno de los cuatro resultados siguientes:

  • Si la función de secuencia de comandos se muestra de forma correcta, el campo response contiene un objeto ExecutionResponse con el valor de retorno de la función en el campo result del objeto.
  • Si la función de la secuencia de comandos (o Apps Script en sí) genera una excepción, el campo error contiene un objeto Status. El campo details del objeto Status contiene un arreglo con un único objeto ExecutionError que proporciona información sobre la naturaleza del error.
  • Si aún no se completó la ejecución, el campo done es false y no están presentes los campos response ni error.
  • Si la llamada a run falla (por ejemplo, debido a una solicitud con formato incorrecto o un error de autorización), el método muestra un código de respuesta HTTP en el rango 4XX con un formato diferente para el cuerpo de la respuesta. Las bibliotecas cliente convierten automáticamente una respuesta 4XX en una clase de excepción.

Representación JSON
{
  "done": boolean,

  // Union field result can be only one of the following:
  "error": {
    object (Status)
  },
  "response": {
    "@type": string,
    field1: ...,
    ...
  }
  // End of list of possible types for union field result.
}
Campos
done

boolean

Este campo indica si se completó la ejecución de la secuencia de comandos. Una ejecución completa tiene un campo response propagado que contiene la ExecutionResponse de la función que se ejecutó.

Campo de unión result. El resultado de la operación, que puede ser un error o una response válida. Si done == false, no se establecen error ni response. Si done == true, se puede establecer con exactitud uno de error o response. Es posible que algunos servicios no proporcionen el resultado. result puede ser uno de los siguientes:
error

object (Status)

Si una llamada a run se realiza correctamente, pero la función de la secuencia de comandos (o Apps Script) genera una excepción, este campo contiene un objeto Status. El campo details del objeto Status contiene un arreglo con un único objeto ExecutionError que proporciona información sobre la naturaleza del error.

response

object

Si la función de secuencia de comandos muestra resultados correctamente, este campo contiene un objeto ExecutionResponse con el valor de retorno de la función.

Un objeto que contiene campos de un tipo arbitrario. Un campo adicional "@type" contiene una URI que identifica el tipo. Ejemplo: { "id": 1234, "@type": "types.example.com/standard/id" }.

Alcances de la autorización

Se necesita uno de los siguientes alcances de OAuth:

  • https://apps-apis.google.com/a/feeds
  • https://apps-apis.google.com/a/feeds/alias/
  • https://apps-apis.google.com/a/feeds/groups/
  • https://mail.google.com/
  • https://sites.google.com/feeds
  • https://www.google.com/calendar/feeds
  • https://www.google.com/m8/feeds
  • https://www.googleapis.com/auth/admin.directory.group
  • https://www.googleapis.com/auth/admin.directory.user
  • https://www.googleapis.com/auth/documents
  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/drive
  • https://www.googleapis.com/auth/dynamiccreatives
  • https://www.googleapis.com/auth/forms
  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/groups
  • https://www.googleapis.com/auth/script.cpanel
  • https://www.googleapis.com/auth/script.external_request
  • https://www.googleapis.com/auth/script.scriptapp
  • https://www.googleapis.com/auth/script.send_mail
  • https://www.googleapis.com/auth/script.storage
  • https://www.googleapis.com/auth/script.webapp.deploy
  • https://www.googleapis.com/auth/spreadsheets
  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/sqlservice
  • https://www.googleapis.com/auth/userinfo.email

Para obtener más información, consulta la Descripción general de OAuth 2.0.

Estado

Si una llamada a run se realiza correctamente, pero la función de la secuencia de comandos (o de Apps Script) genera una excepción, el campo error del cuerpo de la respuesta contiene este objeto Status.

Representación JSON
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Campos
code

integer

El código de estado. Para esta API, este valor hace lo siguiente:

  • 10, que indica un error SCRIPT_TIMEOUT
  • 3, que indica un error INVALID_ARGUMENT o
  • 1, que indica una ejecución de CANCELLED

message

string

Un mensaje de error dirigido al desarrollador en inglés. Cualquier mensaje de error orientado al usuario se localiza y se envía en el campo details, o el cliente debe localizarlo.

details[]

object

Un arreglo que contiene un solo objeto ExecutionError que proporciona información sobre la naturaleza del error.

Un objeto que contiene campos de un tipo arbitrario. Un campo adicional "@type" contiene una URI que identifica el tipo. Ejemplo: { "id": 1234, "@type": "types.example.com/standard/id" }.