API del servidor de App Maker

App

Esta clase permite que una secuencia de comandos de servidor acceda a los datos y verifique los permisos. Además, proporciona otra funcionalidad específica para App Maker.

var userRoles = app.getActiveUserRoles();
if (userRoles.indexOf(app.roles.Admins) >= 0) {
  // Create admin-only application settings record.
  var settings = app.models.Settings.newRecord();
  app.saveRecords([settings]);
}

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Propiedades

Nombre Tipo Descripción
roles string[string] Todas las funciones de usuario definidas en esta aplicación.


if (userRoles.indexOf(app.roles.Admins) < 0) {
  throw 'Access denied';
}
models Model[string] Todos los modelos de datos definidos en la aplicación.


var record = app.models.Person.newRecord();
app.saveRecords([record]);
metadata Metadata Todos los metadatos definidos en la aplicación.


var displayField = app.metadata.models.model1.displayField;
    
ManagedError function(message: String) Muestra un mensaje de error personalizado.


throw new app.ManagedError("Custom message shown to app users");
  
transaction Transaction Controla las transacciones en los modelos de Cloud SQL.


app.transaction.cloudSql.start(app.transaction.cloudSql.isolation.REPEATABLE_READ);
  

Métodos

Nombre Valor de retorno Descripción
getActiveUserRoles() string[] Muestras las funciones del usuario actual. Consulta también Session.getActiveUser().


var roles = app.getActiveUserRoles();
if (roles.indexOf(app.roles.Admins) < 0) {
  throw 'Access denied';
}
saveRecords(
  records:Record[])
undefined Crea nuevos registros a partir de borradores (si el campo de _key del registro es null) o actualiza los registros existentes (_key no es null). Establece el campo de _key para los registros recién creados.


var record = app.models.Person.newRecord();
app.saveRecords([record]);
deleteRecords(
  records:Record[])
undefined Borra los registros.


var record = app.models.Person.getRecord(key);
app.deleteRecords([record]);
getRoleMembers(role:string) string[] Muestra todos los miembros que pertenecen a una función específica.


var role = app.roles.Admins;
var members = app.getRoleMembers(role);

No muestra los miembros individuales de un grupo que agregaste a una función.

Association

Esta clase representa una asociación entre dos registros, uno en el modelo en un extremo de una relación específica y el otro en el modelo en el otro extremo (puede ser el mismo modelo).

Cada asociación consta de dos claves que identifican los registros que están asociados.

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Propiedades

Nombre Tipo Descripción
sourceKey string La clave del registro en el modelo en el extremo fuente de la relación. Usa Record._sourceKey para acceder al registro.
targetKey string La clave del registro en el modelo en el extremo destino de la relación. Usa Record._targetKey para acceder al registro.

Si quieres identificar qué extremo de una relación es la fuente y cuál el destino, consulta la pestaña Seguridad para ver un modelo en la relación. Los permisos de relación tienen títulos como Empleado + Departamento. Empleado y Departamento son los nombres de los extremos de la relación. El modelo que corresponde al primer extremo de relación es el modelo fuente y el modelo que corresponde al segundo extremo de relación es el modelo destino.

Model

Esta clase representa un modelo de datos en App Maker. Permite que una secuencia de comandos acceda a los registros de datos de este modelo.

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Métodos

Nombre Valor de retorno Descripción
deleteRecords(
  keys:string[])
undefined Borra varios registros por sus claves.
getRecord(
  key:string)
Record Carga un registro por clave.
getRecords(
  keys:string[])
Record[] Carga varios registros por sus claves. Puede mostrar menos registros si no se pueden encontrar algunas claves. Los registros que se muestran se ordenan de la misma forma en que se pasaron las claves.
newQuery() Query Crea una consulta para cargar los registros del modelo actual que coinciden con ciertos criterios.


var query = app.models.Person.newQuery();
query.filters.Name._startsWith = 'John';
query.filters.Age._greaterThan = 20;
query.sorting.Name._ascending();
query.sorting.Age._descending();
var records = query.run();
newRecord() Record Crea un nuevo registro no guardado (registro en borrador). El campo de _key del registro nuevo será null hasta que se guarde el registro.


var record = app.models.Person.newRecord();
app.saveRecords([record]);

Query

Esta clase representa una consulta de datos en App Maker. Permite que una secuencia de comandos controle el filtrado, el ordenamiento y la paginación de los registros de datos. Cuando un usuario inicia una consulta, App Maker aplica filtros de propiedad a la consulta y comprueba los permisos de los resultados antes de mostrarlos al usuario.

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Propiedades

Nombre Tipo Descripción
filters Dynamic Agrega filtros a la consulta. Filtros compatibles: equals, notEquals, lessThan, greaterThan, lessThanOrEquals, greaterThanOrEquals, in, notIn, startsWith, notStartsWith, contains, notContains.


var query = app.models.Person.newQuery();
query.filters.Name._startsWith = 'John';
query.filters.Age._greaterThan = 20;
var records = query.run();

Los filtros in y notIn comprueban que el valor en el campo sea igual (o distinto) que un valor en un arreglo dado.

Los filtros startsWith, notStartsWith, contains, notContains solo son compatibles con strings y listas de strings.

Los filtros lessThan, greaterThan, lessThanOrEquals, greaterThanOrEquals solo son compatibles con números, fechas, strings y para los tipos de datos de lista correspondientes.

Cuando consultas modelos de directorio, solo puedes usar ciertos filtros. Para obtener una lista completa, consulta Campos de usuario y operadores de consulta.

limit number Establece la cantidad máxima de registros que se muestran para la consulta.
offset number Establece la cantidad de registros que se omiten y no se incluyen en el resultado de la consulta.
parameters Dynamic Proporciona acceso a parámetros personalizados en la secuencia de comandos de consulta.
sorting Dynamic Agrega ordenamiento a la consulta.


var query = app.models.Person.newQuery();
query.sorting.Name._ascending();
query.sorting.Age._descending();
var records = query.run();
prefetch Dynamic Agrega recuperación previa a la consulta. La recuperación previa garantizará que los registros relacionados se carguen en la misma solicitud que la consulta, en lugar de cargarlos más tarde y a pedido cuando se acceda a ellos. La recuperación previa reduce la cantidad total de solicitudes y genera una consulta inicial más costosa, que puede mejorar el rendimiento.


var query = app.models.Employee.newQuery();
query.prefetch.Manager._add();
query.prefetch.Manager.Reports._add();

var records = query.run();
for (var i in records) {
  var manager = records[i].Manager; // No extra call to DB
  var reports = manager.Reports; // No extra call to DB
  ...
}
           

Métodos

Nombre Valor de retorno Descripción
run() Record[] Ejecuta la consulta y muestra los registros que coinciden con los criterios de consulta.


var query = app.models.Person.newQuery();
query.filters.Name._startsWith = 'John';
query.filters.Name._ascending();
var persons = query.run();

Record

Esta clase representa un registro de datos en App Maker. Permite que una secuencia de comandos acceda a los campos de registro y a los registros relacionados.

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Propiedades

Nombre Tipo Descripción
_key string La clave de registro solo es única dentro del modelo dado. La clave se genera cuando se guarda el registro. Es null para los registros nuevos no guardados (registros en borrador).
<field> Dynamic Hay un campo por cada campo o relación de registro. Las relaciones Any-to-1 se representan con campos simples, mientras que las relaciones Any-to-N se representan con arreglos.


var person = app.models.Person.newRecord();
person.name = 'John Doe';
person.age = 35;
app.saveRecords([person]);

var manager = app.models.Person.newRecord();
manager.name = 'Jeff Williams';
manager.age = 45;
app.saveRecords([manager]); // You must save new record before using it in relations.

person.manager = manager;
app.saveRecords([person]);

Metadata

Esta clase representa todos los metadatos en la aplicación. Permite que una secuencia de comandos acceda a los metadatos de esta aplicación.

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Propiedades

Nombre Tipo Descripción
models ModelMetadata[string] Todos los modelos definidos en la aplicación.

ModelMetadata

Esta clase representa un modelo de metadatos en App Maker. Permite que una secuencia de comandos acceda a los metadatos de este modelo.

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Propiedades

Nombre Tipo Descripción
description string La descripción del modelo, como se especifica en el editor de modelos
displayField Field[string] El campo de visualización de un modelo. Puede ser nulo
fields Field[string] Todos los campos definidos en el modelo
name string El nombre del modelo, como se especifica en el editor de modelos
readOnly bool Si un modelo es de solo lectura. Si un modelo es de solo lectura, los datos no se pueden escribir en el modelo
relations Relation[string] Todas las relaciones que provienen de un modelo dado
type string El tipo de base de datos de un modelo: Calculado, Cloud SQL o Directorio

Field

Esta clase representa un campo en App Maker. Permite que una secuencia de comandos acceda a un campo de este modelo.

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Propiedades

Nombre Tipo Descripción
autoIncrement bool Si la base de datos incrementa al campo de forma automática
defaultValue Dynamic El valor predeterminado del campo. Puede ser nulo
description string La descripción del campo. Puede ser nulo
displayName string El nombre visible del campo. Puede ser nulo
key string La clave de este campo
maxLength number La longitud máxima del valor en caracteres. Puede ser nulo
maxValue number|date El valor máximo del campo. Puede ser nulo
minLength number La longitud mínima del valor en caracteres. Puede ser nulo.
minValue number|date El valor mínimo del campo. Puede ser nulo
name string El nombre del campo
possibleValues Dynamic[] Muestra todos los valores posibles del campo. Puede ser nulo
regexp string Una expresión regular con la que deben coincidir todos los valores válidos. Puede ser nulo
regexpError string El mensaje de error que se muestra al usuario si la expresión regular no coincide con los datos de entrada del usuario. Una instancia de “%” en un mensaje de error se sustituirá con los datos de entrada del usuario. Puede ser nulo
required bool Si el campo es obligatorio
type string El tipo de campo: String, Número, Fecha o Booleano
wholeNumber bool Si el número en el campo es un número entero. Un número es entero si no contiene decimales significativos

Relation

Esta clase representa un lado de una relación desde el modelo especificado hasta otro en App Maker. Permite que una secuencia de comandos acceda a una relación de este modelo.

Esta clase solo está disponible en las aplicaciones de App Maker. Consulta la referencia de Apps Script para ver todas las demás clases generales disponibles en las aplicaciones de App Maker.

Propiedades

Nombre Tipo Descripción
ascending bool Si el campo “ordenar por” del modelo de extremo está ordenado de forma ascendente
count string El recuento de un modelo (“Uno”, “Muchos”)
model ModelMetadata El modelo de extremo de una relación
name string El nombre de extremo de una relación
owner bool Si el modelo de extremo posee la relación

Por ejemplo, si una “Invoice” posee sus “Items”, entonces app.metadata.models.Items.relations.Invoice.owner sería true

sortBy Field El campo según el cual se ordena el modelo de extremo. Puede ser nulo

Transaction

Proporciona acceso a la API de transacción en App Maker. Disponible solo en aplicaciones que tengan al menos un modelo de Cloud SQL.

Propiedades

Nombre Tipo Descripción
cloudSql CloudSqlTransaction Controla las transacciones en los modelos de Cloud SQL
TransactionError function(message:String) Excepción que indica que se produjo un error de transacción

CloudSqlTransaction

Este tipo permite que una secuencia de comandos inicie, confirme, revierta y verifique el estado de las transacciones de la base de datos en los modelos de Cloud SQL.

Propiedades

Nombre Tipo Descripción
isolation IsolationLevel Enumeración de los niveles de aislamiento posibles
lockOnRead LockMode Enumeración de los posibles modos Lock On Read que se pueden establecer con setLockOnRead()

Métodos

Nombre Valor de retorno Descripción
isStarted() bool Si una transacción se encuentra en curso


app.transaction.cloudSql.isStarted();
                

start
level:IsolationLevel)
undefined Inicia una transacción. Muestra un error si ya hay otra transacción en curso


app.transaction.cloudSql.start(
app.transaction.cloudSql.isolation.REPEATABLE_READ);
        

El parámetro es opcional. READ_COMMITTED es el valor predeterminado si no se pasa ningún valor

commit() undefined Confirma la transacción actual. Muestra un error si la aplicación intenta realizar una confirmación antes de que se inicie una transacción


app.transaction.cloudSql.commit();
        

rollback() undefined Revierte todos los cambios en la transacción actual y libera los bloqueos de la base de datos. Muestra un error si la aplicación intenta realizar una reversión antes de que se inicie una transacción


app.transaction.cloudSql.rollback();
        

setLockOnRead(
lockMode:LockMode)
undefined Aplica un modo de bloqueo específico a todas las lecturas de la base de datos hasta que la transacción se complete o el modo de bloqueo se cambie con el método


app.transaction.cloudSql.setLockOnRead(
app.transaction.cloudSql.lockOnRead.UPDATE);

IsolationLevel

Enumeración de los niveles de aislamiento posibles.

Propiedades

Nombre Tipo Descripción
READ_UNCOMMITTED IsolationLevel La transacción actual puede ver los cambios no enviados de otras transacciones. Obtén más información.
READ_COMMITTED IsolationLevel La transacción actual puede ver los cambios enviados de otras transacciones. Obtén más información.
REPEATABLE_READ IsolationLevel La transacción actual puede ver los cambios enviados de otras transacciones. Garantiza que todas las lecturas repetibles de un registro mostrarán registros en el mismo estado. Obtén más información.
SERIALIZABLE IsolationLevel La transacción actual está aislada por completo de otras transacciones. Las transacciones se ejecutan de manera secuencial. Obtén más información.

LockMode

Enumeración de los modos de lectura de bloqueo posibles para establecer con setLockOnRead().

Propiedades

Nombre Tipo Descripción
NO_LOCK LockMode No se aplican bloqueos. Modo predeterminado.
SHARE LockMode Otras transacciones pueden leer los datos bloqueados por la transacción actual, pero no pueden modificarlos.
UPDATE LockMode Otras transacciones no pueden leer o modificar los datos bloqueados por la transacción actual.