GoogleスプレッドシートやGoogleドキュメントを業務の中で使われている方は多いのではないでしょうか。オンラインで使える表計算ソフトウェアは人と共有する場合はもちろん、ブラウザしかない環境でも使えるのが便利です。
そんなGoogleスプレッドシート(恐らくドキュメントでも)使えるNCMBライブラリを作成中です。
JavaScript SDKはそのままでは使えません
Google Apps Script(GASと略します)では通常のJavaScriptがそのまま動くわけではありません。関数や動作、利用できるライブラリに制限があります。例えばURLのパースができなかったり、ネットワークアクセスが通常のXMLHTTPではなく独自の仕組みとなっています。さらにPromiseも使えません。
そのため、GASの中で使うためには新しいライブラリとして作成しなければなりません。コードはある程度流用できますが、ほぼ書き直しです。
ネットワークアクセスが同期です
JavaScriptで開発者を悩ませるのが非同期処理ではないでしょうか。特にネットワークアクセスをする場合は常に非同期になってしまうのでコードが分かりづらくなってしまうのですが、GASの場合は同期処理になります。
var response = UrlFetchApp.fetch(url, params);
これで分かりやすくなると言う方は多そうです。
データストアにデータを保存する
現状のGASスクリプト(バージョン4)がサポートしているのはシンプルなデータストアへのデータ保存だけです。以下のように記述します。ある程度現状のJavaScript SDKに似せています。
var application_key = "YOUR_APPLICATION_KEY"; var client_key = "YOUR_CLIENT_KEY"; var ncmb = NCMB.init(application_key, client_key); var dataTest = new ncmb.DataStore("dataTest"); dataTest.set("hello", "world"); dataTest.save(); return dataTest.objectId;
これを関数として呼び出すと次のようになります。
使い方
Googleスプレッドシートのコードエディタで、ライブラリのIDとして 1yWnb7GfYsBCR-MZvi6r-TOYv_y-AV4le5P7kaG5B3iZ5VNnSk9Q55pSJ を追加してください。バージョン5がデータストアの追加に対応したものになります。
後は自分で付けた名前(デフォルトはNCMB)を使ってmBaaSへのアクセスができます。
データ保存の使い道としてはマスタメンテナンスが挙げられます。ただし関数として実行すると、シートを開く度に保存処理が実行されてしまいます。IFを使うなどして一度登録したら再実行されないような工夫が必要でしょう。