GAS エディタでの利用
GASsma は CLI を使わず、GAS のスクリプトエディタだけでも使えます。ライブラリを追加すればすぐに書き始められるため、小さなスクリプトや、ローカル環境を用意せずに試したい場合に向いています。
このページでは、GAS エディタだけで使う場合の書き方をまとめます。CLI を使う場合の書き方は基本を参照してください。
どちらの使い方も同じライブラリの同じ機能を使います。違いは設定をどこに書くかだけです。CLI を使う場合は schema.prisma に書き、GAS エディタだけで使う場合はコンストラクタの引数に書きます。
ライブラリの追加
スクリプト ID 1ZVuWMUYs4hVKDCcP3nVw74AY48VqLm50wRceKIQLFKL0wf4Hyou-FIBH をライブラリとして追加します。手順は導入方法を参照してください。
追加すると、グローバルの Gassma 名前空間からクライアントを生成できるようになります。
インスタンス生成
スプレッドシートに紐づいた GAS(コンテナバインド型)であれば、引数なしでインスタンスを生成できます。
const gassma = new Gassma.GassmaClient();
スプレッドシートではない場所に GAS を作成した場合や、別のスプレッドシートを扱う場合は、対象のスプレッドシート ID を渡します。
const gassma = new Gassma.GassmaClient("XXXXXXXXXXXXXXXXXXX");
オプションオブジェクトでの初期化
リレーション定義やグローバル omit など、設定を伴う場合はオプションオブジェクトを渡します。
const gassma = new Gassma.GassmaClient({
id: "XXXXXXXXXXXXXXXXXXX", // 省略可
relations: {
Users: {
posts: { type: "oneToMany", to: "Posts", field: "id", reference: "authorId" },
},
},
omit: {
Users: { password: true },
},
});
lock($transaction を使う場合は必須)
lock は、$transaction と autoincrement の採番で使うロックです。CLI を使う場合は生成されたクライアントが既定値(LockService.getScriptLock())を埋めますが、GAS エディタで書く場合は自分で渡す必要があります。
const gassma = new Gassma.GassmaClient({
lock: LockService.getScriptLock(),
});
lock を渡さないまま $transaction を呼ぶと GassmaTransactionLockRequiredError が throw されます(autoincrement の採番は、lock がなければロックを取らずに続行します)。粒度の選択肢はロックを参照してください。
コンストラクタオプション一覧
| オプション | 説明 | 参照 |
|---|---|---|
id | スプレッドシート ID(省略時はアクティブスプレッドシート) | - |
relations | リレーション定義 | リレーション定義 |
omit | グローバル omit 設定 | グローバル omit |
defaults | フィールドのデフォルト値 | defaults |
updatedAt | 自動更新タイムスタンプ | updatedAt |
ignore | フィールドレベルの除外 | ignore |
ignoreSheets | シートレベルの除外 | ignore |
map | フィールド名のマッピング | map |
mapSheets | シート名のマッピング | map |
autoincrement | 自動採番 | autoincrement |
lock | $transaction と autoincrement で使うロック | ロック |
strictUndefinedChecks | クエリ入力の明示的な undefined を実行時エラーにする | strictUndefinedChecks / Gassma.skip |
スキーマ版との対応
CLI を使う場合、上記のオプションの多くは schema.prisma の属性として書きます。
| コンストラクタオプション | スキーマでの書き方 |
|---|---|
relations | @relation(fields: [...], references: [...]) |
defaults | @default(...) |
autoincrement | @default(autoincrement()) |
updatedAt | @updatedAt |
ignore | @ignore |
ignoreSheets | @@ignore |
map | @map("...") |
mapSheets | @@map("...") |
strictUndefinedChecks | previewFeatures = ["strictUndefinedChecks"] |
omit | スキーマ側の書き方はありません(CLI を使う場合もコンストラクタで指定します) |
lock | スキーマ側の書き方はありません(CLI を使う場合、生成されたクライアントが既定値を埋めます) |
id | datasource ブロックの url、または gassma.config.ts の datasource.url |
各設定の詳細はスキーマを参照してください。
型について
GAS エディタでは型定義が生成されないため、シート名・カラム名の補完や型チェックは効きません。シート名やカラム名の誤りは実行時に判明します。
型安全に開発したい場合は CLI の利用を検討してください(クイックスタート)。
エラークラスの参照
GASsma が投げるエラークラスは Gassma 名前空間から参照できます。
try {
gassma.Users.findFirstOrThrow({ where: { id: 999 } });
} catch (e) {
if (e instanceof Gassma.NotFoundError) {
console.log("見つかりませんでした");
}
}
エラークラスの一覧はエラー一覧を参照してください。
Date などのビルトイン型は、ライブラリ境界をまたぐと instanceof で判定できません。詳しくは基本を参照してください。