FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Google Apps Script SDK(v8対応版)を開発中です(データストアの検索)

f:id:mbaasdevrel:20190222161342p:plain

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がより書きやすくなっていますので、ぜひ移行してみてください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。