メインコンテンツまでスキップ

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 は、$transactionautoincrement の採番で使うロックです。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("...")
strictUndefinedCheckspreviewFeatures = ["strictUndefinedChecks"]
omitスキーマ側の書き方はありません(CLI を使う場合もコンストラクタで指定します)
lockスキーマ側の書き方はありません(CLI を使う場合、生成されたクライアントが既定値を埋めます)
iddatasource ブロックの url、または gassma.config.tsdatasource.url

各設定の詳細はスキーマを参照してください。

型について

GAS エディタでは型定義が生成されないため、シート名・カラム名の補完や型チェックは効きません。シート名やカラム名の誤りは実行時に判明します。

型安全に開発したい場合は CLI の利用を検討してください(クイックスタート)。

エラークラスの参照

GASsma が投げるエラークラスは Gassma 名前空間から参照できます。

try {
gassma.Users.findFirstOrThrow({ where: { id: 999 } });
} catch (e) {
if (e instanceof Gassma.NotFoundError) {
console.log("見つかりませんでした");
}
}

エラークラスの一覧はエラー一覧を参照してください。

注記

Date などのビルトイン型は、ライブラリ境界をまたぐと instanceof で判定できません。詳しくは基本を参照してください。