Google Apps Scriptがβ版としてv8対応しています。v8版にすると、実行速度が向上するほか、constやasync/awaitといったモダンなJavaScriptで書けるようになります。
しかし、従来のGoogle Apps Script SDKは動作しなくなります。 ReferenceError: User is not defined
というエラーメッセージが出るようになります。対応を試みたのですが、うまくいきませんでした。
そこで、よりモダンな書き方でv8対応版としてGoogle Apps Script SDKを作り直しています。
コードについて
コードはNCMBMania/ncmb_gas: Google Apps Script(v8対応版)のコードです。にアップロードしてあります。TypeScriptで書かれています。
コードは google/clasp: 🔗 Command Line Apps Script Projects を使ってGoogle Apps Script用のコードに変換しています。
使い方
スクリプトのIDは 1Z8Lezd0OS6qm9W0EVQxBGx1gztqD14kXPfQxycr_rc2atOfKujiWZe7I
になります。基本的に最新版を使うようにしてください。
初期化
以下はプリフィックスをNCMBとした場合のコードです。
const ncmb = NCMB.init('APPLICATION_KEY', 'CLIENT_KEY');
データストアへの検索
v8対応版で、Objective-CやSwift、React Native版SDKと同じような書き方に変更しました。データストアのインスタンスを使うのではなく、ncmb.Query
を使って検索用オブジェクトを作成します。
const query = ncmb.Query(className); const ary = query .greaterThan('number', 4) .equalTo('msg', 'Hello') .fetchAll();
最初の一件だけ必要な場合には fetch を使ってください。
const query = ncmb.Query(className); const obj = query .greaterThan('number', 4) .equalTo('msg', 'Hello') .fetch();
検索用オペランド
検索用のオペランドは下記を用意しています。JavaScript SDKのAPIに合わせています。
- equalTo(key: string, value: any)
- notEqualTo(key: string, value: any)
- lessThan(key: string, value: any)
- lessThanOrEqualTo(key: string, value: any)
- greaterThan(key: string, value: number)
- greaterThanOrEqualTo(key: string, value: number)
- in(key: string, value: any)
- exclude(key: string, value: any)
- exists(key: string, value: any)
- regularExpressionTo(key: string, value: string)
- inArray(key: string, value: any)
- ninArray(key: string, value: any)
- allInArray(key: string, value: any)
- near(key: string, value: any)
- withinKilometers(key: string, value: any, distance: number)
- withinMiles(key: string, value: any, distance: number)
- withinRadians(key: string, value: any, distance: number)
- withinSquare(key: string, southWest: ary, northEast: ary)
まとめ
まだ機能はほとんどありませんが、旧版程度の機能まではすぐに実装していきます。v8版はJavaScriptがより書きやすくなっていますので、ぜひ移行してみてください。