API Server App Maker

Aplikasi

Dengan class ini, skrip server dapat mengakses data dan memeriksa izin, serta menyediakan fungsi lain khusus untuk 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]);
}

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Properti

Nama Jenis Deskripsi
roles string[string] Semua peran pengguna yang ditetapkan dalam aplikasi ini.


if (userRoles.indexOf(app.roles.Admins) < 0) {
  throw 'Access denied';
}
models Model[string] Semua model data yang ditetapkan dalam aplikasi.


var record = app.models.Person.newRecord();
app.saveRecords([record]);
metadata Metadata Semua metadata yang ditetapkan dalam aplikasi.


var displayField = app.metadata.models.model1.displayField;
    
ManagedError function(message: String) Menampilkan pesan error khusus.


throw new app.ManagedError("Custom message shown to app users");
  
transaction Transaction Mengontrol transaksi dalam model Cloud SQL.


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

Metode

Nama Nilai yang Ditampilkan Deskripsi
getActiveUserRoles() string[] Menampilkan peran pengguna saat ini. Lihat juga Session.getActiveUser ().


var roles = app.getActiveUserRoles();
if (roles.indexOf(app.roles.Admins) < 0) {
  throw 'Access denied';
}
saveRecords(
  records:Record[])
undefined Membuat record baru dari draf (jika kolom _key record adalah null) atau memperbarui record yang ada (_key bukan null). Menetapkan kolom _key untuk record yang baru dibuat.


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


var record = app.models.Person.getRecord(key);
app.deleteRecords([record]);
getRoleMembers(role:string) string[] Menampilkan semua anggota yang memiliki peran tertentu.


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

Tidak menampilkan anggota individu grup yang telah Anda tambahkan ke peran.

Pengaitan

Class ini mewakili pengaitan antara dua record, salah satunya dalam model di satu ujung relasi tertentu, dan satunya lagi dalam model di ujung yang lain. (Ini mungkin model yang sama.)

Setiap pengaitan terdiri dari dua kunci yang mengidentifikasi record terkait.

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Properti

Nama Jenis Deskripsi
sourceKey string Kunci record dalam model di sumber ujung relasi. Gunakan Record._sourceKey untuk mengakses record.
targetKey string Kunci record dalam model pada target ujung relasi. Gunakan Record._targetKey untuk mengakses record.

Untuk mengidentifikasi ujung relasi mana yang merupakan sumber dan mana yang merupakan target, lihat tab Keamanan untuk model dalam relasi. Izin relasi memiliki judul seperti Karyawan + Departemen. Karyawan dan Departemen adalah nama dari ujung relasi. Model yang sesuai dengan ujung relasi pertama adalah model sumber, dan model yang sesuai dengan ujung relasi kedua adalah model target.

Model

Class ini mewakili model data di App Maker. Class ini memungkinkan skrip untuk mengakses record data model ini.

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Metode

Nama Nilai yang Ditampilkan Deskripsi
deleteRecords(
  keys:string[])
undefined Menghapus beberapa record berdasarkan kuncinya.
getRecord(
  key:string)
Record Memuat record berdasarkan kunci.
getRecords(
  keys:string[])
Record[] Memuat beberapa record berdasarkan kuncinya. Dapat menampilkan lebih sedikit record jika beberapa kunci tidak dapat ditemukan. Record yang ditampilkan diurutkan sesuai urutan kunci yang diberikan.
newQuery() Query Membuat kueri untuk memuat record model saat ini yang cocok dengan kriteria tertentu.


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 Membuat data baru yang belum disimpan (draf record). Kolom _key dari record baru akan menjadi null hingga record disimpan.


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

Kueri

Class ini mewakili kueri data di App Maker. Class ini memungkinkan skrip untuk mengontrol pemfilteran, pengurutan, dan paging record data. Saat pengguna memulai kueri, App Maker menerapkan filter kepemilikan ke kueri dan memeriksa izin hasil sebelum menampilkannya ke pengguna.

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Properti

Nama Jenis Deskripsi
filters Dynamic Menambahkan filter ke kueri. Filter yang didukung: 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();

Filter in dan notIn memeriksa bahwa nilai di kolom sama (atau tidak sama) dengan nilai apa pun di array yang diberikan.

Filter startsWith, notStartsWith, contains, notContains hanya didukung untuk string dan daftar string.

Filter lessThan, greaterThan, lessThanOrEquals, greaterThanOrEquals hanya didukung untuk nomor, tanggal, dan string; dan untuk jenis data daftar yang sesuai.

Saat Anda membuat kueri model direktori, Anda hanya dapat menggunakan filter tertentu. Untuk daftar lengkap, lihat Operator kueri dan kolom Pengguna.

limit number Menetapkan jumlah maksimum record yang ditampilkan untuk kueri.
offset number Menetapkan jumlah record yang akan dilewati dan tidak disertakan dalam hasil kueri.
parameters Dynamic Memberikan akses ke parameter khusus di Skrip Kueri.
sorting Dynamic Menambahkan pengurutan ke kueri.


var query = app.models.Person.newQuery();
query.sorting.Name._ascending();
query.sorting.Age._descending();
var records = query.run();
prefetch Dynamic Menambahkan prefetch ke kueri. Prefetch akan memastikan bahwa record yang terkait dimuat dalam permintaan yang sama dengan kueri, bukan memuatnya nanti saat ada permintaan akses. Prefetch mengurangi jumlah total permintaan, namun menghasilkan kueri awal yang lebih mahal, yang dapat meningkatkan performa.


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
  ...
}
           

Metode

Nama Nilai yang Ditampilkan Deskripsi
run() Record[] Mengeksekusi kueri, menampilkan record yang cocok dengan kriteria kueri.


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

Record

Class ini mewakili record data di App Maker. Class ini memungkinkan skrip untuk mengakses kolom record dan record terkait.

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Properti

Nama Jenis Deskripsi
_key string Kunci record hanya unik dalam model yang diberikan. Kunci dibuat saat record disimpan, dan ditetapkan ke null untuk record baru yang belum disimpan (draf record).
<field> Dynamic Tersedia kolom untuk setiap kolom atau relasi record. Relasi Any-to-1 direpresentasikan oleh kolom sederhana, sedangkan relasi Any-to-N direpresentasikan oleh array.


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

Class ini merepresentasikan semua metadata di aplikasi. Class ini memungkinkan skrip untuk mengakses metadata aplikasi ini.

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Properti

Nama Jenis Deskripsi
models ModelMetadata[string] Semua model yang ditetapkan dalam aplikasi.

Metadata Model

Class ini merepresentasikan model metadata di App Maker. Class ini memungkinkan skrip untuk mengakses metadata model ini.

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Properti

Nama Jenis Deskripsi
description string Deskripsi model, seperti yang ditentukan dalam Editor Model.
displayField Field[string] Kolom tampilan model. Dapat ditetapkan ke null.
fields Field[string] Semua kolom yang ditetapkan dalam model.
name string Nama model, seperti yang ditentukan dalam Editor Model.
readOnly bool Apakah model adalah hanya baca atau tidak. Jika model adalah hanya-baca, data tidak dapat ditulis ke model ini.
relations Relation[string] Semua relasi yang berasal dari model yang diberikan.
type string Jenis database model: Terhitung, Cloud SQL atau Direktori.

Kolom

Class ini merepresentasikan kolom di App Maker. Class ini memungkinkan skrip untuk mengakses kolom model ini.

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Properti

Nama Jenis Deskripsi
autoIncrement bool Apakah kolom bertambah secara otomatis berdasarkan database.
defaultValue Dynamic Nilai default kolom. Dapat ditetapkan ke null.
description string Deskripsi kolom. Dapat ditetapkan ke null.
displayName string Nama tampilan kolom. Dapat ditetapkan ke null.
key string Kunci dari kolom ini.
maxLength number Panjang maksimum nilai dalam karakter. Dapat ditetapkan ke null.
maxValue number|date Nilai maksimum kolom. Dapat ditetapkan ke null.
minLength number Panjang minimum nilai dalam karakter. Dapat ditetapkan ke null.
minValue number|date Nilai minimum kolom. Dapat ditetapkan ke null.
name string Nama kolom.
possibleValues Dynamic[] Menampilkan semua nilai yang memungkinkan dari kolom ini. Dapat ditetapkan ke null.
regexp string Ekspresi reguler yang harus cocok dengan semua nilai yang valid. Dapat ditetapkan ke null.
regexpError string Pesan error yang ditampilkan kepada pengguna jika ekspresi reguler tidak cocok dengan input pengguna. Kemunculan tanda '%' dalam pesan error akan diganti dengan input pengguna. Dapat ditetapkan ke null.
required bool Apakah kolom tersebut wajib diisi atau tidak.
type string Jenis kolom: String, Nomor, Tanggal, atau Boolean.
wholeNumber bool Apakah nomor di kolom adalah bilangan bulat. Bilangan bulat adalah bilangan yang tidak berisi jumlah desimal yang signifikan.

Relasi

Class ini merepresentasikan satu ujung relasi dari model yang ditentukan ke model yang lain di App Maker. Class ini memungkinkan skrip untuk mengakses relasi model ini.

Class ini hanya tersedia di aplikasi App Maker. Lihat referensi App Script untuk semua class umum lainnya yang tersedia di aplikasi App Maker.

Properti

Nama Jenis Deskripsi
ascending bool Jika kolom "urutkan berdasarkan" dari model akhir diurutkan dalam urutan menaik.
count string Jumlah model ("Satu", "Banyak").
model ModelMetadata Model akhir suatu relasi.
name string Nama akhir suatu relasi.
owner bool Apakah model akhir memiliki relasi atau tidak.

Misalnya, jika "Invoice" memiliki "Item" tersendiri, app.metadata.models.Items.relations.Invoice.owner akan ditetapkan ke true.

sortBy Field Kolom tempat model akhir diurutkan. Dapat ditetapkan ke null.

Transaksi

Menyediakan akses ke API Transaksi di App Maker. Hanya tersedia di aplikasi yang memiliki setidaknya satu model Cloud SQL.

Properti

Nama Jenis Deskripsi
cloudSql CloudSqlTransaction Mengontrol transaksi dalam model Cloud SQL.
TransactionError function(message:String) Pengecualian yang menunjukkan error transaksi telah terjadi.

Transaksi Cloud SQL

Jenis ini memungkinkan skrip untuk memulai, melakukan, membuat rollback, dan memeriksa status transaksi database dalam model Cloud SQL.

Properti

Nama Jenis Deskripsi
isolation IsolationLevel Enumerasi kemungkinan tingkat Isolasi.
lockOnRead LockMode Enumerasi kemungkinan mode Penguncian Baca untuk ditetapkan melalui setLockOnRead ().

Metode

Nama Nilai yang Ditampilkan Deskripsi
isStarted() bool Apakah transaksi sedang berlangsung.


app.transaction.cloudSql.isStarted();
                

start
level:IsolationLevel)
undefined Memulai transaksi. Menampilkan error jika transaksi lain sudah berlangsung.


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

Parameter bersifat opsional; READ_COMMITTED adalah setelan default jika tidak ada nilai yang diteruskan.

commit() undefined Melakukan transaksi saat ini. Menampilkan error jika aplikasi mencoba melakukan transaksi sebelum transaksi dimulai.


app.transaction.cloudSql.commit();
        

rollback() undefined Mengembalikan semua perubahan dalam transaksi saat ini dan merilis kunci database. Menampilkan error jika aplikasi mencoba melakukan rollback sebelum transaksi dimulai.


app.transaction.cloudSql.rollback();
        

setLockOnRead(
lockMode:LockMode)
undefined Menerapkan mode kunci yang ditentukan untuk semua database yang terbaca hingga transaksi selesai atau mode kunci diubah menggunakan metode.


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

Tingkat isolasi

Enumerasi kemungkinan tingkat isolasi.

Properti

Nama Jenis Deskripsi
READ_UNCOMMITTED IsolationLevel Transaksi saat ini dapat melihat perubahan transaksi lainnya yang tidak terkirim. Pelajari lebih lanjut.
READ_COMMITTED IsolationLevel Transaksi saat ini dapat melihat perubahan transaksi lain yang dikirim. Pelajari lebih lanjut.
REPEATABLE_READ IsolationLevel Transaksi saat ini dapat melihat perubahan transaksi lain yang dikirim. Menjamin bahwa semua pembacaan berulang dari suatu record akan menampilkan record dalam keadaan yang sama. Pelajari lebih lanjut.
SERIALIZABLE IsolationLevel Transaksi saat ini sepenuhnya terisolasi dari transaksi lain. Transaksi berjalan secara berurutan. Pelajari lebih lanjut.

Mode Kunci

Enumerasi kemungkinan mode penguncian baca untuk disetel dengan setLockOnRead().

Properti

Nama Jenis Deskripsi
NO_LOCK LockMode Tidak ada kunci yang diterapkan. Mode Default.
SHARE LockMode Transaksi lain dapat membaca data yang dikunci oleh transaksi saat ini, tetapi transaksi tersebut tidak dapat memodifikasinya.
UPDATE LockMode Transaksi lain tidak dapat membaca atau memodifikasi data yang dikunci oleh transaksi saat ini.