앱
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]); }
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
속성
이름 | 유형 | 설명 |
---|---|---|
roles |
string[string] |
애플리케이션에 정의된 모든 사용자 역할입니다.
if (userRoles.indexOf(app.roles.Admins) < 0) { throw 'Access denied'; } |
models |
Model[string] |
애플리케이션에 정의된 모든 데이터 모델입니다.
var record = app.models.Person.newRecord(); app.saveRecords([record]); |
metadata |
Metadata |
애플리케이션에 정의된 모든 메타데이터입니다.
var displayField = app.metadata.models.model1.displayField; |
ManagedError |
function(message: String) |
커스텀 오류 메시지를 표시합니다.
throw new app.ManagedError("Custom message shown to app users"); |
transaction |
Transaction |
Cloud SQL 모델에서 트랜잭션을 제어합니다.
app.transaction.cloudSql.start(app.transaction.cloudSql.isolation.REPEATABLE_READ); |
메소드
이름 | 반환 값 | 설명 |
---|---|---|
getActiveUserRoles() |
string[] |
현재 사용자의 역할을 반환합니다. Session.getActiveUser()도 참조하세요.
var roles = app.getActiveUserRoles(); if (roles.indexOf(app.roles.Admins) < 0) { throw 'Access denied'; } |
saveRecords(
|
undefined |
초안에서 새 레코드를 만들거나(레코드의 _key 필드가 null 인 경우) 기존 레코드를 업데이트합니다(_key 가 null 이 아닌 경우). 새로 만들어진 레코드에 _key 키를 설정합니다
var record = app.models.Person.newRecord(); app.saveRecords([record]); |
deleteRecords( |
undefined |
레코드를 삭제합니다.
var record = app.models.Person.getRecord(key); app.deleteRecords([record]); |
getRoleMembers(role:string) |
string[] |
특정 역할에 속하는 모든 구성원을 반환합니다.
var role = app.roles.Admins; var members = app.getRoleMembers(role); 역할에 추가한 그룹의 개별 구성원을 반환하지 않습니다. |
Association
이 클래스는 두 레코드, 즉 특정 관계의 한쪽에 있는 모델의 레코드와 다른 쪽에 있는 모델의 레코드 간 연결을 나타냅니다. 두 개가 동일한 모델일 수도 있습니다.
각 연결은 연결된 레코드를 식별하는 두 개의 키로 구성됩니다.
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
속성
이름 | 유형 | 설명 |
---|---|---|
sourceKey |
string |
관계의 소스 쪽에 있는 모델의 레코드에 대한 키입니다. 레코드에 액세스하려면 Record._sourceKey 를 사용합니다. |
targetKey |
string |
관계의 대상 쪽에 있는 모델의 레코드에 대한 키입니다. 레코드에 액세스하려면 Record._targetKey 를 사용합니다. |
소스와 대상이 각각 어느 쪽에 있는지 파악하려면 보안 탭에서 관계에서 모델을 확인하세요. 관계 권한에는 직원 + 부서와 같은 제목이 있습니다. 직원 및 부서가 관계 양쪽의 이름입니다. 첫 번째 관계에 해당하는 모델이 소스 모델이고, 두 번째 관계에 해당하는 모델이 대상 모델입니다.
Model
이 클래스는 App Maker의 데이터 모델을 나타내며 스크립트를 통해 이 모델의 데이터 레코드에 액세스할 수 있습니다.
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
메소드
이름 | 반환 값 | 설명 |
---|---|---|
deleteRecords(
|
undefined |
키를 기준으로 여러 레코드를 삭제합니다. |
getRecord(
|
Record |
키를 기준으로 레코드를 로드합니다. |
getRecords(
|
Record[] |
키를 기준으로 여러 레코드를 로드합니다. 일부 키를 찾을 수 없는 경우 더 적은 레코드를 반환할 수 있습니다. 반환된 레코드는 키가 전달된 순서로 정렬됩니다. |
newQuery() |
Query |
특정 기준과 일치하는 현재 모델의 레코드를 로드하는 쿼리를 작성합니다.
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 |
저장되지 않은 새 레코드(초안 레코드)를 만듭니다. 새 레코드의 _key 필드는 레코드가 저장되기 전에는 null 입니다.
var record = app.models.Person.newRecord(); app.saveRecords([record]); |
Query
이 클래스는 App Maker의 데이터 쿼리를 나타내며 스크립트를 통해 데이터 레코드의 필터링, 정렬, 페이징을 제어할 수 있습니다. 사용자가 쿼리를 전송하면 사용자에게 반환되기 전에 App Maker가 소유권 필터를 쿼리에 적용하고 결과의 권한을 검사합니다.
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
속성
이름 | 유형 | 설명 |
---|---|---|
filters |
Dynamic |
쿼리에 필터를 추가합니다. 지원되는 필터는 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();
디렉토리 모델을 쿼리할 때 특정 필터만 사용할 수 있습니다. 전체 목록은 사용자 필드 및 쿼리 연산자를 참조하세요. |
limit |
number |
쿼리에 대해 반환할 최대 레코드 수를 설정합니다. |
offset |
number |
쿼리 결과에 포함하지 않고 건너 뛸 레코드 수를 설정합니다. |
parameters |
Dynamic |
쿼리 스크립트의 커스텀 매개변수에 대한 액세스 권한을 제공합니다. |
sorting |
Dynamic |
쿼리에 정렬을 추가합니다.
var query = app.models.Person.newQuery(); query.sorting.Name._ascending(); query.sorting.Age._descending(); var records = query.run(); |
prefetch |
Dynamic |
쿼리에 프리페치를 추가합니다. 프리페치를 사용하면 관련 레코드가 나중에 액세스할 때 필요에 따라 로드되는 것이 아니라 쿼리와 동일한 요청에 로드됩니다. 프리페치를 사용하면 초기 쿼리의 비용은 많이 들지만 총 요청 수가 감소하므로 성능이 향상될 수 있습니다.
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 ... } |
메소드
이름 | 반환 값 | 설명 |
---|---|---|
run() |
Record[] |
쿼리를 실행하고 쿼리 기준과 일치하는 레코드를 반환합니다.
var query = app.models.Person.newQuery(); query.filters.Name._startsWith = 'John'; query.filters.Name._ascending(); var persons = query.run(); |
Record
이 클래스는 App Maker의 데이터 레코드를 나타내며 스크립트를 통해 레코드 필드와 관련 레코드에 액세스할 수 있습니다.
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
속성
이름 | 유형 | 설명 |
---|---|---|
_key |
string |
레코드 키는 해당 모델 내에서만 고유합니다. 키는 레코드가 저장되면 생성되고, 저장되지 않은 새로운 레코드(초안 레코드)에서는 null 입니다. |
<field> |
Dynamic |
각 레코드 필드 또는 관계용 필드가 있습니다. 다대일 관계는 단순 필드를 통해 표현되고, 다대N 관계는 배열을 통해 표현됩니다.
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
이 클래스는 애플리케이션의 모든 메타데이터를 나타내며 스크립트를 통해 이 애플리케이션의 메타데이터에 액세스할 수 있습니다.
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
속성
이름 | 유형 | 설명 |
---|---|---|
models |
ModelMetadata[string] |
애플리케이션에 정의된 모든 모델입니다. |
ModelMetadata
이 클래스는 App Maker의 메타데이터 모델을 나타내며 스크립트를 통해 이 모델의 메타데이터에 액세스할 수 있습니다.
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
속성
이름 | 유형 | 설명 |
---|---|---|
description |
string |
모델 편집기에 지정된 모델에 대한 설명입니다. |
displayField |
Field[string] |
모델의 디스플레이 필드입니다. null일 수 있습니다. |
fields |
Field[string] |
모델에 정의된 모든 필드입니다. |
name |
string |
모델 편집기에서 지정된 모델의 이름입니다. |
readOnly |
bool |
모델이 읽기 전용인지 여부를 나타냅니다. 모델이 읽기 전용인 경우 이 모델에 데이터를 쓸 수 없습니다. |
relations |
Relation[string] |
해당 모델에서 발생하는 모든 관계입니다. |
type |
string |
모델의 데이터베이스 유형입니다(Calculated, Cloud SQL 또는 Directory). |
Field
이 클래스는 App Maker의 필드를 나타내며 스크립트를 통해 이 모델의 필드에 액세스할 수 있습니다.
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
속성
이름 | 유형 | 설명 |
---|---|---|
autoIncrement |
bool |
필드가 데이터베이스에 의해 자동으로 증가되는지 여부를 나타냅니다. |
defaultValue |
Dynamic |
필드의 기본값입니다. null일 수 있습니다. |
description |
string |
필드에 대한 설명입니다. null일 수 있습니다. |
displayName |
string |
필드의 표시 이름입니다. null일 수 있습니다. |
key |
string |
이 필드의 키입니다. |
maxLength |
number |
문자 값의 최대 길이입니다. null일 수 있습니다. |
maxValue |
number|date |
필드의 최댓값입니다. null일 수 있습니다. |
minLength |
number |
문자 값의 최소 길이입니다. null일 수 있습니다. |
minValue |
number|date |
필드의 최솟값입니다. null일 수 있습니다. |
name |
string |
필드의 이름입니다. |
possibleValues |
Dynamic[] |
필드의 모든 가능한 값을 표시합니다. null일 수 있습니다. |
regexp |
string |
모든 유효한 값이 일치해야 하는 정규 표현식입니다. null일 수 있습니다. |
regexpError |
string |
정규 표현식이 사용자 입력과 일치하지 않는 경우 사용자에게 표시되는 오류 메시지입니다. 오류 메시지의 '%s' 항목은 사용자 입력으로 대체됩니다. null일 수 있습니다. |
required |
bool |
필수 필드인지 여부를 나타냅니다. |
type |
string |
필드의 유형입니다(문자열, 숫자, 날짜 또는 부울). |
wholeNumber |
bool |
필드의 숫자가 정수인지 여부를 나타냅니다. 숫자는 유의한 소수점을 포함하지 않으면 정수입니다. |
Relation
이 클래스는 App Maker의 지정된 모델과 다른 모델 간 관계의 한쪽을 나타냅니다. 이를 사용하면 스크립트를 통해 이 모델의 관계에 액세스할 수 있습니다.
이 클래스는 App Maker 애플리케이션에서만 사용할 수 있습니다. App Maker 애플리케이션에서 사용할 수 있는 다른 모든 일반 클래스는 Apps Script 참조를 확인하세요.
속성
이름 | 유형 | 설명 |
---|---|---|
ascending |
bool |
최종 모델의 '정렬 기준' 필드가 오름차순으로 정렬되는 경우를 나타냅니다. |
count |
string |
모델의 개수입니다('One', 'Many'). |
model |
ModelMetadata |
관계의 최종 모델입니다. |
name |
string |
관계의 최종 이름입니다. |
owner |
bool |
최종 모델이 관계를 소유하는지 여부를 나타냅니다. 예를 들어 'Invoice'가 'Items'를 소유하는 경우 |
sortBy |
Field |
최종 모델이 정렬되는 필드입니다. null일 수 있습니다. |
Transaction
App Maker의 Transaction API에 대한 액세스를 제공합니다. 1개 이상의 Cloud SQL 모델이 있는 애플리케이션에서만 사용할 수 있습니다.
속성
이름 | 유형 | 설명 |
---|---|---|
cloudSql |
CloudSqlTransaction |
Cloud SQL 모델에서 트랜잭션을 제어합니다. |
TransactionError |
function(message:String) |
트랜잭션 오류가 발생했음을 나타내는 예외입니다. |
CloudSqlTransaction
이 유형을 사용하면 스크립트를 통해 Cloud SQL 모델에서 데이터베이스 트랜잭션의 상태를 시작하고 커밋, 롤백, 검사할 수 있습니다.
속성
이름 | 유형 | 설명 |
---|---|---|
isolation |
IsolationLevel |
가능한 격리 레벨의 열거형입니다. |
lockOnRead |
LockMode |
setLockOnRead()를 통해 설정이 가능한 읽기 잠금 모드의 열거형입니다. |
메소드
이름 | 반환 값 | 설명 |
---|---|---|
isStarted() |
bool |
현재 트랜잭션이 진행 중인지 여부를 나타냅니다.
app.transaction.cloudSql.isStarted(); |
start
|
undefined |
트랜잭션을 시작합니다. 다른 트랜잭션이 이미 진행 중이면 오류가 발생합니다.
app.transaction.cloudSql.start( app.transaction.cloudSql.isolation.REPEATABLE_READ); 매개변수는 선택사항입니다. 전달된 값이 없는 경우 |
commit() |
undefined |
현재 트랜잭션을 커밋합니다. 트랜잭션이 시작되기 전에 앱에서 커밋하려고 시도하면 오류가 발생합니다. app.transaction.cloudSql.commit(); |
rollback() |
undefined |
현재 트랜잭션의 모든 변경사항을 되돌리고 데이터베이스 잠금을 해제합니다. 트랜잭션이 시작되기 전에 앱에서 롤백을 시도하면 오류가 발생합니다.
app.transaction.cloudSql.rollback(); |
setLockOnRead(
|
undefined |
트랜잭션이 완료되거나 잠금 모드가 메소드를 통해 변경될 때까지 모든 데이터베이스 읽기에 지정된 잠금 모드를 적용합니다.
app.transaction.cloudSql.setLockOnRead( app.transaction.cloudSql.lockOnRead.UPDATE); |
IsolationLevel
가능한 격리 레벨의 열거형입니다.
속성
이름 | 유형 | 설명 |
---|---|---|
READ_UNCOMMITTED |
IsolationLevel |
현재 트랜잭션이 다른 트랜잭션의 제출되지 않은 변경사항을 볼 수 있습니다. 자세히 알아보기 |
READ_COMMITTED |
IsolationLevel |
현재 트랜잭션이 다른 트랜잭션의 제출된 변경사항을 볼 수 있습니다. 자세히 알아보기 |
REPEATABLE_READ |
IsolationLevel |
현재 트랜잭션이 다른 트랜잭션의 제출된 변경사항을 볼 수 있습니다. 모든 반복 읽기가 동일한 상태의 레코드를 반환하도록 보장합니다. 자세히 알아보기 |
SERIALIZABLE |
IsolationLevel |
현재 트랜잭션이 다른 트랜잭션과 완전히 격리됩니다. 트랜잭션이 순차적으로 실행됩니다. 자세히 알아보기 |
LockMode
setLockOnRead()
를 통해 설정할 읽기 잠금 모드의 열거형입니다.
속성
이름 | 유형 | 설명 |
---|---|---|
NO_LOCK |
LockMode |
적용된 잠금이 없습니다. 기본 모드입니다. |
SHARE |
LockMode |
기타 트랜잭션은 현재 트랜잭션에서 잠금 설정한 데이터를 읽을 수는 있지만 수정할 수 없습니다. |
UPDATE |
LockMode |
기타 트랜잭션은 현재 트랜잭션에서 잠금 설정한 데이터를 읽거나 수정할 수 없습니다. |