アプリ
このクラスを使用すると、サーバー スクリプトでデータにアクセスして権限を確認し、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
このクラスは、2 つのレコードの関連付けを表します。1 つのレコードは、特定のリレーション エンドにあり、もう 1 つのレコードは反対側のモデルのリレーション エンドにあります(同じモデルの場合もあります)。
それぞれの関連付けは 2 つのキーから構成され、これにより、関連付けられているレコードが識別されます。
このクラスは App Maker アプリケーションでのみ利用可能です。App Maker アプリケーションで使用可能な他の汎用クラスについては、Apps Script リファレンスをご覧ください。
プロパティ
名前 | 型 | 説明 |
---|---|---|
sourceKey |
string |
リレーションのソース側のモデルにあるレコードのキー。レコードにアクセスするには Record._sourceKey を使用します。 |
targetKey |
string |
リレーションのターゲット側のモデルにあるレコードのキー。レコードにアクセスするには Record._targetKey を使用します。 |
ソースまたはターゲット側のリレーション エンドを特定するには、リレーションが設定されているモデルの [Security] タブを調べます。リレーションの権限には、Employee + Department のようなタイトルが付いています。Employee と Department はリレーション エンドの名前です。最初のリレーション エンドに対応するモデルがソースモデルで、2 番目のリレーション エンドに対応するモデルがターゲット モデルです。
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 |
各レコード フィールドまたはリレーションにフィールドがあります。Any-to-1 リレーションは単純なフィールドで表され、Any-to-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 |
モデルのデータベース タイプ(計算モデル、Cloud SQL、ディレクトリ)。 |
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 |
エンドモデルの sort-by フィールドが昇順で並べ替えられている場合。 |
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 モデル内のデータベース トランザクションの開始、commit、ロールバック、ステータス確認を行うことができます。
プロパティ
名前 | 型 | 説明 |
---|---|---|
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 |
現在のトランザクションを commit します。トランザクションの開始前にアプリが commit を試みると、エラーが発生します。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 |
他のトランザクションは、現在のトランザクションによってロックされているデータの読み取りや変更を行うことはできません。 |