LoginSignup
1
2

More than 3 years have passed since last update.

ExcelからFilemakerを操作する。

Posted at

はじめに

FileMaker便利だけれどUIとかレコード記録のタイミングが独特です。使い慣れたExcelからFilemakerへレコードを登録できれば便利ですね。ということでやってみました。

環境

サーバー
windows server 2012 R2
Filemaker server 17

クライアント
windows 10 pro
office 2016

準備

ExcelにMicrosotf XMLライブラリを追加する。これはやってもやらなくてもよい。

Filemaker側

アクセス先のデータベースを作る
SSLはテスト用のものが初期設定されているのでまあなくてもいい
管理コンソールからFilemaker Date APIを有効にしておく
アカウントにFilemaker Date API経由のアクセスを許可する

JSONをパースする

VBA-JSONを使おう

FileMakerからトークンを取得する

Dim strToken As String
Dim objHTTP As Object
Set objHTTP = CreateObject("MSXML2.XMLHTTP.6.0")

objHTTP.Open "POST", "https://[ホスト名]/fmi/data/v1/databases/[データベース名]/sessions", False
objHTTP.setRequestHeader "Authorization", "Basic [idpw]"
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send

[データベース名]は日本語なら日本語のままで構わない
[idpw]はidとpwを:で連結した文字列をまとめてbase64エンコードする

FileMakerからとりあえずレコードを取得してみる

objHTTP.Open "POST", "https://[ホスト名]/fmi/data/v1/databases/[データベース名]/layouts/[レイアウト名]/records?_limit=5", False
objHTTP.setRequestHeader "Authorization", "Bearer " & strToken
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send

[データベース名]はさっきのもの、[レイアウト名]は[データベース名]と同じく日本語なら日本語のままで構わない。limit=5で最大5件指定。

FileMakerから検索してレコードを取得する

Dim jsonObject As Object
Set jsonObject = New Dictionary

objHTTP.Open "POST", "https://[ホスト名]/fmi/data/v1/databases/[データベース名]/layouts/[レイアウト名]/_find", False
objHTTP.setRequestHeader "Authorization", "Bearer " & strToken
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send JsonConverter.ConvertToJson(jsonObject, Whitespace:=2)

jsonObjectにクエリをディクショナリー形式で作成してVBA-JSONでJsonを生成する。
クエリの作成がややめんどくさい。以下のような感じで作成した。

Dim jsonObject As Object
Set jsonObject = New Dictionary    
Dim issues As Object
Set issues = New Dictionary

jsonObject.Add "query", New Collection
jsonObject("query") = Array(issues)
issues("項目名") = "検索条件"

jsonObject("query")は検索条件の配列が格納されなければならない。
そしてissuesは項目と条件が対となったディクショナリー形式でなければなない。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2