ニフクラ mobile backendを仕事で使っている場合、どうしても手放せないのがExcelではないでしょうか。クラスデータをダウンロードしてExcelで分析したり、マスターデータになるクラスへデータ登録を行う前にExcelでメンテナンスしているかも知れません。
そこでExcelからニフクラ mobile backendを直接操作できるように、マクロライブラリを作成しています。今回はデータの簡単な保存方法について紹介します。
動作対象
このマクロはWindows 10のMicrosoft Office 2016で開発しています。それ以外の環境で動作する保証はありません。なお、HMAC SHA256を使っているので、 .NET 3.5 をインストールする必要があります(via Windows10にしたらVBAから.Net Frameworkが使えなくなった - Qiita)。
使い方
簡単な使い方です。Dataというデータクラスを作ってデータを保存しています。
Dim ApplicationKey As String Dim ClientKey As String ApplicationKey = "YOUR_APPLICATION_KEY" ClientKey = "YOUR_CLIENT_KEY" Dim ncmb As clsNCMB Set ncmb = New clsNCMB ncmb.ApplicationKey = ApplicationKey ncmb.ClientKey = ClientKey Dim dataClass As clsDataStore Set dataClass = ncmb.dataStore("Data") Dim dataItem As clsDataItem Set dataItem = dataClass.newData dataItem.Field "message", "Hello World" If dataItem.Save() Then Debug.Print ("保存できました") Else Debug.Print ("保存失敗") End If
クラス構造
現在、下記のクラスがあります。
- clsNCMB
- clsRequest
- clsDataStore
- clsDataItem
- clsError
clsNCMBを初期化して開始します。VBAではインスタンスの初期化をしながら引数を渡すことができないので、アプリケーションキーとクライアントキーを別途渡す必要があります。
後は ncmb.dataStore
メソッドでデータストアのクラスを作成します。その後、dataStore.newData を使って新しいデータを作成します。
外部ライブラリ、参考情報
外部ライブラリとして、
- https://github.com/VBA-tools/VBA-UtcConverter (MIT License)
- https://github.com/VBA-tools/VBA-JSON (MIT License)
が使われています。
また、ソート処理についてVBAでDictionary(連想配列)を辞書順にソートする - Qiitaのコードを使わせてもらっています。SHA256によるハッシュ化はjavascript - Base64 HMAC SHA1 String in VBA - Stack Overflowのコードを参考にしています。
最後に
やはり問題になるのは署名処理になるでしょう。また、VBAはクラスの概念が特殊だったり、配列や連想配列の扱い勝手がよくありません。しかし、そこさえ乗り切ってしまえば、後はデータをクラウドにアップロードしたり、逆にダウンロードするのが簡単になります。ぜひ業務でお役立てください。
コードは goofmint/ncmb-excel: NCMBのExcel用クラスモジュールです。 にアップロードしてあります。