【FileMaker】スプレッドシートからデータを取得したいんだ!
経緯
FileMakerだと細かな管理が何かと面倒!
でも共有するときはFileMaker上で見えるようにしたい!
そんなときにスプレッドシートでデータを管理しようと考えました。
※2022/11現在
Google Sheet API v4対応
事前準備
スプレッドシートの共有とIDの確認 ※1
まず、スプレッドシートは閲覧者が確認できる(FileMakerで接続できる)範囲で共有しておきます。
次にスプレッドシートのIDを確認してメモっておきます。
https://docs.google.com/spreadsheets/d/{ID}/edit#gid=0
/d/よりも後ろの値がスプレッドシート固有のIDです。
今回は何らかの申請管理をイメージしてみました。
Google Sheet APIキーの用意 ※2
Google Cloud PlatformでAPIキーを発行します。
カギ自体は【+認証情報を作成】をクリックすると自動で作成されます。
こちらもメモっておいてください。
実装
完成イメージ
上のボタンでデータを取得して、下のボタンでデータをテーブルに表示させます。
テーブル/フィールド作成
テストですので再利用しやすくするためにグローバル変数にしています。
JSONデータ取得
データ取得先のURLを作成し、「URLから挿入」を使ってデータをフィールドに挿入します。
URLの作成は少し面倒ですがこうなります。
"https://sheets.googleapis.com/v4/spreadsheets/" & // 固定
InputTable::SPREAD_ID & // ※1で取得したID
"/values/" & // 固定
InputTable::SHEET_NAME & // ※1の取得するデータのシート名
"?key=" & InputTable::API_KEY // ※2で取得したKEY
ここまで準備できたらボタンに「GET_JSON」を割当て実行してみましょう
dataが入ってくると思います。
あとはポータルの変数に移してあげるだけです!
ポータルに反映
JSONデータが[googlespreadsheetdata]フィールドに入っている状態で、スクリプト「DISP_TABLE」を実行します。
このスクリプトではJSONGetElement関数を利用して配列1つずつを変数に入れ、各フィールドへと格納しています。
スプレッドシートから取得したデータは、key[values]の中に格納されています。こんな感じで1つずつ取得していきます。
JSONGetElement( InputTable::googlespreadsheetdata; "values[" & $cnt & "][0]" )
$cntの後ろにある添え字は列番号です。
このスクリプトをボタンに割り当てて実行すると。。。
こんな感じでテーブルに表示されます!
FileMakerとスプレッドシートの連携で出来ることが増えそうです!!
今のところの課題はループを使うと件数が多いとそこそこ遅いことと
データを取得するときの範囲指定かなあ。
この記事が気に入ったらサポートをしてみませんか?