ニフクラmBaaSお役立ちブログ

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

Excel用NCMBライブラリでマスタメンテナンス

f:id:mbaasdevrel:20180126214033p:plain

オフィスでは最もよく使われるアプリケーションであろうExcelでもニフクラ mobile backendが使えるように、マクロで動作するExcel用NCMBを開発しています。今回はその簡単な使い方です。アプリのマスタデータをExcelからメンテナンスする方法を紹介します。

既存データを取り込む

まず既存データを取り込みます。マスタデータなので大量にデータはないかと思いますので、fetchAllを順番に並べていきます。ヘッダーは手作業で入力としています。

Sub LoadData()
    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("TestClass")
    
    Dim dataItems() As clsDataItem
    dataItems = dataClass.fetchAll()
    
    Dim dataItem As clsDataItem
    Dim workSheet As workSheet
    Set workSheet = ThisWorkbook.Worksheets("Sheet1")
    
    For i = 0 To UBound(dataItems) - 1
      Set dataItem = dataItems(i)
      workSheet.Cells(i + 2, 1).value = dataItem.val("objectId")
      workSheet.Cells(i + 2, 2).value = dataItem.val("message")
      workSheet.Cells(i + 2, 3).value = dataItem.val("count")
    Next
End Sub

f:id:mbaasdevrel:20180126214033p:plain

データを保存する

そして編集が終わったら、逆にシートのデータを読み取って、保存していきます。この手順だけでマスタデータの編集が実現できます。

Sub saveData()
    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("TestClass")
    Dim dataItem As clsDataItem
    
    Dim lastRow As Integer
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    Dim workSheet As workSheet
    Set workSheet = ThisWorkbook.Worksheets("Sheet1")
    
    For i = 2 To lastRow
        Set dataItem = dataClass.newData
        dataItem.Field "objectId", workSheet.Cells(i, 1).value
        dataItem.Field "message", workSheet.Cells(i, 2).value
        dataItem.Field "count", workSheet.Cells(i, 3).value
        dataItem.Save
    Next
End Sub

まとめ

現時点では文字列、数値のみ対応しています。将来的に日付や真偽値、オブジェクトなどの保存にも対応していきます。それができればExcelを使ってデータ操作ができるようになるので、アプリ担当の方は運用が楽になるのではないでしょうか。

Excel用NCMBライブラリはgoofmint/ncmb-excel: NCMBのExcel用クラスモジュールです。にて開発を行っています。利用の際にはvbacGUIを使ってコードを連結すると使いやすいはずです。

中津川 篤司

中津川 篤司

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