freeeとClaris FileMakerとの連動ができれば、独自に資金繰り表を作成したり、
未回収表の作成を行うことができるようになります。
興味がある方は、無料で相談に応じますので、お気軽にお問合せください。
目次
はじめに
こちらのブログでは、Claris FileMakerとfreeeを連携し、
以下の図の動きをClaris FileMakerに取り入れ、収支情報をfreeeへ登録する方法を記載しています。
freeeで設定する内容
freeeでアカウントを作成し、freeeにログインできるようにしておきましょう。
次にfreeeアプリストアを開き[開発者ページ]を開いてください。
今すぐアプリを作成を押すと以下の様な画面が開きますので、
基本情報を入力し、作成ボタンを押してください。
新しいアプリの作成が完了すると、アプリの基礎情報が表示されますので、
- コールバックURL → jsonを返すためのURL
- Client ID → clientを識別するためのID
- Client Secret → アクセスするために必要な情報
- Webアプリ認証用URL → ユーザー本人か認識するための情報
以上の4つの情報をメモしておいてください。
Claris FileMakerで設定する内容
これからClaris FileMakerに実装する方法を説明させていただきます。
設定する項目が多く、サンプルがないと分かりずらいと思いますので、
ぜひ下記のボタンからアプリをダウンロードして、
サンプルファイルを見ながら設定方法をご覧ください。
それではfreeeで取得した情報を、実際にClaris FileMakerに実装してみましょう。
アクセストークンの取得
1.access token → スクリプトを動かす際に必要
2.refresh token → アクセストークンの再取得を行う際に必要
3.返ってくるjson → 1・2の取得ができているのか確認する際に必要
jsonで帰ってくる情報を今後も使用するため、
上の3つを記録するためのjson記録用テーブルとフィールドを作成してください。
*以降、テーブル名を『テーブルjson』と記入します。
*access tokenとは
アプリケーションとユーザー間で、データの利用を許可することを示すものです。
*refresh tokenとは
アクセストークンを再取得するためのものです。
※アクセストークンには情報漏洩のリスクを減らすため、有効期限があります。
リフレッシュトークンを使用し、アクセストークンを新しく取得できますので、
次のアクセストークンを取得するため、現在のリフレッシュトークンも記録しておく必要があります。
freeeで取得したWebアプリ認証用URLから、認可コードを取得してください。
(認可コードは使用期限が10分のため、使用期限を過ぎてしまった場合は再取得してください。)
Claris FileMakerのテーブルjsonで、1回目(リフレッシュトークンがない場合)の
アクセストークンを取得するボタンを作成します。
- スクリプト内容
- 以下にスクリプトと内容を記載しました。
- []にfreeeアプリ作成で取得した情報を入力してください。
- (例 -d“redirect_uri=[コールバックURI]” → -d“redirect_uri=urn:ietf:wg:oauth:2.0:oob” )
スクリプト | 内容 |
---|---|
テキストを挿入 ターゲット:$curl | -i -X POST \ -H “Content-Type:application/x-www-form-urlencoded” \ -d “grant_type=authorization_code” \ -d “client_id=[Client ID]” \ -d “client_secret=[Client Secret]” \ -d “code=[認可 code]” \ -d “redirect_uri=[コールバックURI]” \ |
URLから挿入 ターゲット:$結果 cURLのオプション:$curl | “https://accounts.secure.freee.co.jp/public_api/token” |
フィールド設定 テーブルjson::返ってくるjson | JSONFormatElements ( $結果 ) |
フィールド設定 テーブルjson::access token | JSONGetElement ( $結果 ; “access_token” ) |
フィールド設定 テーブルjson::refresh token | JSONGetElement ( $結果 ; “refresh_token” ) |
以下は実際に設定したスクリプトの写真です。
作成した3つのフィールド
1.access token
2.refresh token
3.返ってくるjson に値が返ってきた場合成功しています。
(エラーなどで返ってこなかった場合、認可コードを再取得してもう一度入力し直してください。)
2回目の情報取得
- スクリプト内容
- 以下にスクリプトと内容を記載しました。
- []にfreeeアプリ作成で取得した情報を入力してください。
- (例 -d“redirect_uri=[コールバックURI]” → -d“redirect_uri=urn:ietf:wg:oauth:2.0:oob” )
※1回目のアクセストークン取得スクリプトは今後使用しない
(次回からリフレッシュトークンを使用する)ため、
フィールドのみを残し、スクリプトは新しく作成してください。
スクリプト | 内容 |
---|---|
テキストを挿入 ターゲット:$curl | -i -X POST \ -H “Content-Type:application/x-www-form-urlencoded” \ -d “grant_type=refresh_token” \ -d “client_id=[Client ID]” \ -d “client_secret=[Client Secret]” \ -d “refresh_token={refresh_ token}”\ -d “redirect_uri=[コールバックURI]” |
変数を設定 名前:$cURL | Substitute ( $curl ; “{refresh_ token}” ; テーブルjson::refresh_token ) |
変数を設定 名前:$curl | Substitute ( $curl; ¶ ; “” ) |
URLから挿入 ターゲット:結果 cURLオプション:$curl | “https://accounts.secure.freee.co.jp/public_api/token” |
フィールド設定 テーブルjson::access token | JSONGetElement ( $結果 ; “access_token” ) |
フィールド設定 テーブルjson::refresh token | JSONGetElement ( $結果 ; “refresh_token” ) |
以下は実際に設定したスクリプトの写真です。
1回目で取得したaccess tokenとrefresh tokenが変更されていれば成功です。
(エラーなどで値が返ってこなかった場合、認可コードを再取得して、
再度こちらより試していただければと思います。 )
freeeとClaris FileMakerとの連動などお困りがある方や、興味がある方は、
無料で相談に応じますので、お気軽にお問合せください。
freeeに登録する際に必要となる情報の取得方法を説明します。
必要な情報は以下の4点です。
①事務所情報
②取引先情報
③勘定科目情報
④税区分情報
①事務所情報
事務所情報を取得するため、以下のフィールドを作成してください。
1.事務所json → 事務所の一覧情報が正しく返ってきているか確認する際に必要
- スクリプト内容
- 以下にスクリプトと内容を記載しました。
スクリプト | 内容 |
---|---|
テキストを挿入 ターゲット:$curl | -i -X GET \ -H “Authorization:Bearer {access_token}” \ -H “Content-Type:application/json” \ |
変数を設定 名前:$curl | Substitute ( $curl ; “{access_token}” ; テーブルjson::at_accesst ) |
URLから挿入 ターゲット:$結果 cURLオプション:$curl | “https://api.freee.co.jp/api/1/users/me?companies=true” |
フィールド設定 テーブルjson::事務所json | JSONFormatElements ( $結果 ) |
以下は実際に設定したスクリプトの写真です。
作成した事務所jsonフィールドにjson形式で値が返ってきたら成功です。
ここで返ってくる“id”は、会社番号になります。
念の為、idを記録しておいてください。
②取引先情報
取引先を登録するには取引先idが必要になります。
既に取引先をfreeeから登録している場合、取引先idをClaris FileMakerで新しく記憶させる必要があるため、
1.取引先
2.取引先id
以上2つを記録するための取引先登録用テーブルとフィールドを作成してください。
*以降、テーブル名を『テーブル取引先』と記入します。
また、取引先idを取得するため、テーブルjsonに
1.取引先json
のグローバルフィールドを作成してください。
- スクリプト内容
- 以下にスクリプトと内容を記載しました。
※取引先情報の登録内容なので、新しく取引先情報取得用のスクリプトを作成してください。
スクリプト | 内容 |
---|---|
レイアウト切り替え | テーブルjson |
テキストを挿入 ターゲット:$curl | -i -X GET -H “Authorization:Bearer {access_token}” -H “Content-Type:application/json” |
変数を設定 名前:$curl | Substitute ( $curl ; “{access_token}” ;テーブルjson::access token ) |
変数を設定 名前:$会社id | JSONGetElement ( テーブルjson::事務所json ; “user.companies[0].id” ) |
URLから挿入 ターゲット:$結果 オプション:$curl | “https://api.freee.co.jp/api/1/partners?company_id=”&$会社id |
変数を設定 $取引先json | JSONFormatElements ( $結果 ) |
レイアウト切り替え | テーブル取引先 |
変数を設定 名前:$数 | 0 |
変数を設定 名前:$jsonL | JSONListKeys ( $取引先json ; “partners” ) |
変数を設定 名前:$MAX | ValueCount ( $JSONL ) |
Loop | |
Exit Loop If | $数 ≥ $Max |
新規レコード/検索条件 | |
フィールド設定 テーブル取引先::取引先 | JSONGetElement ( $取引先json ; “partners[” & $数 & “].name” ) |
フィールド設定 テーブル取引先::取引先id | JSONGetElement ( $取引先json ; “partners[” & $数 & “].id” ) |
変数を設定 名前:$数 | $数 + 1 |
End Loop | |
レコード/検索条件確定 |
以下は実際に設定したスクリプトの写真です。
(エラーなどで値が返ってこなかった場合、
アクセストークンの再取得を行っていただければと思います。
それでも動かない場合は、
$会社idの箇所に事務所情報で取得した会社番号を手入力いただければと思います。)
次に取引先をClaris FileMakerから新規登録した際に、取引先idを自動で取得する方法を説明します。
テーブルjsonへ新規に下記2点のフィールドを作成してください。
1.取引先get
2.取引先取得結果
設定内容は以下です。
1.取引先get
配置したフィールドに直接手入力で
JSONGetElement ( 取引先json ; “partner.id” ) と、値を挿入してください。
2.取引先取得結果
計算フィールドにし、計算内容は
Case(
Left( JSONFormatElements ( Evaluate(取引先get) ); 1) = “?”;
Evaluate(取引先get);
JSONFormatElements ( Evaluate(取引先get) )) と、計算式を入力してください。
以下は実際に設定した計算フィールド内容の写真です。
- スクリプト内容
- 以下にスクリプトと内容を記載しました。
- *[]*にfreeeアプリ作成で取得した情報を入力してください。
- (例 -d“redirect_uri=*[コールバックURI]*” → -d“redirect_uri=urn:ietf:wg:oauth:2.0:oob” )
※取引先フィールド押下でスクリプトを動かすため、ボタンは作成せず、スクリプトトリガ設定のOnObjectExitで新しいスクリプトを設定してください。
スクリプト | 内容 |
---|---|
If | isIsEmpty (テーブル取引先::取引先id ) |
変数を設定 名前:$取引先 | テーブル取引先::取引先 |
レイアウト切り替え | テーブルjson |
変数を設定 名前:$会社id | JSONGetElement ( テーブルjson::事務所json ; “user.companies[0].id” ) |
テキストを挿入 ターゲット:$curl | -i -X POST \ -H “Content-Type:application/ x-www-form-urlencoded” \ -d “grant_type=refresh_token” \ -d “client_id=*[Client ID]*” \ -d “client_secret=*[Client Secret]*” \ -d “refresh_token={refresh}”\ -d “redirect_uri=*[コールバックURI]*” |
変数を設定 名前:$curl | Substitute ( $curl ; “{refresh}” ; テーブルjson::refresh token ) |
変数を設定 名前:$curl | Substitute ( $curl; ¶ ; “” ) |
URLから挿入 ターゲット:$結果 オプション:$curl | “https://accounts.secure. freee.co.jp/public_api/token” |
フィールド設定 テーブルjson::access token | JSONGetElement ( $結果 ; “access_token” ) |
フィールド設定 テーブルjson::refresh token | JSONGetElement ( $結果 ; “refresh_token” ) |
変数を設定 名前:$access | テーブルjson::access token |
テキストを挿入 ターゲット:$curl | -X POST -H “accept: application/json” -H “Authorization: Bearer {access_token}” -H “Content-Type: application/json” -H “X-Api-Version: 2020-06-15” -d “{\”company_id\”:{会社id}, \”name\”:\”{name}\” ,\”code\”:\”{name}\”, \”shortcut1\”:\”\”,\”shortcut2\”:\” \”,\”org_code\”:null,\ “country_code\”:\”JP\”, \”long_name\”:\” \”,\”name_kana\”:\”\”, \”default_title\”:\”御中\”,\”phone\”:\”\”, \”contact_name\”:\”\”,\”email\”:\”\”}” |
変数を設定 ターゲット:$curl | Substitute ( $curl ; “{access_token}” ; $access ) |
変数を設定 ターゲット:$curl | Substitute ( $curl ; “{会社id}” ; $会社id ) |
変数を設定 ターゲット:$curl | Substitute ( $curl ; “{name}” ; $取引先 ) |
URLから挿入 ターゲット:テーブルjson::取引先json cURLオプション:$curl | “https://api.freee.co.jp/api/1/partners” |
変数を設定 名前:$id | テーブルjson::取引先取得結果 |
レイアウト切り替え | 元のレイアウト |
フィールド設定 テーブル取引先::取引先id | $id |
End If |
以下は実際に設定したスクリプトの写真です。
③勘定科目情報
勘定科目については、科目が多くjsonから取得することが難しいため、
一度Claris FileMaker内に勘定項目を登録し、
登録内容から検索して、勘定idを取得しようと思います。
そのため、
1.勘定科目
2.勘定科目id
以上2つを記録するための勘定科目登録用テーブルとフィールドを作成してください。
*以降、テーブル名を『テーブル勘定』と記入します。
- スクリプト内容
- 以下にスクリプトと内容を記載しました。
※勘定科目の登録内容のため、新規に勘定科目取得用のスクリプトを作成してください。
スクリプト | 内容 |
---|---|
レイアウト切り替え | テーブルjson |
変数を設定 名前:$会社id | JSONGetElement (テーブルjson::事務所json ; “user.companies[0].id” ) |
テキストを挿入 ターゲット:$curl | -X GET -H “accept: application/json” -H “Authorization: Bearer {access_token}” -H “X-Api-Version: 2020-06-15” |
変数を設定 名前:$curl | Substitute ( $curl ; “{access_token}” ; テーブルjson::access token ) |
URLから挿入 ターゲット:$結果 cURLオプション:$curl | “https://api.freee.co.jp/api/1/account_items?company_id=”&$会社id |
レイアウト切り替え | 元のレイアウト |
変数を設定 名前:$数 | 0 |
変数を設定 名前:$JSONL | JSONListKeys ( $結果 ; “account_items” ) |
変数を設定 名前:$MAX | ValueCount ( $JSONL ) |
Loop | |
Exit Loop If | $数 ≥ $Max |
新規レコード/検索実行 | |
フィールド設定 テーブル勘定::勘定科目 | JSONGetElement ( $結果 ; “account_items[” & $数 & “].name” ) |
フィールド設定 テーブル勘定::勘定科目id | JSONGetElement ( $結果 ; “account_items[” & $数 & “].id”) |
変数を設定 名前:$数 | $数 + 1 |
End Loop | |
レコード/検索条件確定 |
以下は実際に設定したスクリプトの写真です。
(エラーとなった場合は、$会社idの箇所に事務所情報で取得した会社番号を手入力してください。)
④税区分情報
税区分については項目が多く、jsonから取得することが難しいため、
一度Claris FileMaker内に勘定項目を登録し、
登録内容から検索して、勘定idを取得します。
そのため、
1.税区分
2.税区分id
以上2つを記録するための税区分登録用テーブルとフィールドを作成してください。
*以降、テーブル名を『テーブル税区分』と記入します。
- スクリプト内容
- 以下にスクリプトと内容を記載しました。
※税区分の登録内容のため、新しく税区分取得用のスクリプトを作成してください。
スクリプト | 内容 |
---|---|
レイアウト切り替え | テーブルjson |
テキストを挿入 ターゲット:$curl | -X GET -H “accept: application/json” -H “Authorization: Bearer {access_token}” -H “X-Api-Version: 2020-06-15” |
変数を設定 名前:$curl | Substitute ( $curl ; “{access_token}” ;テーブルjson::access token ) |
URLから挿入 ターゲット:$結果 cURLオプション:$curl | “https://api.freee.co.jp/api/1/taxes/codes” |
レイアウト切り替え | 元のレイアウト |
変数を設定 $数 | 0 |
変数を設定 $JSONL | JSONListKeys ( $結果 ; “taxes” ) |
$MAX | ValueCount ( $JSONL ) |
Loop | |
Exit Loop If | $数 ≥ $Max |
新規レコード/検索条件 | |
フィールド設定 テーブル税区分::税区分id | JSONGetElement ( $結果 ; “taxes[” & $数 & “].code”) |
フィールド設定 テーブル税区分::税区分 | JSONGetElement ( $結果 ; “taxes[” & $数 & “].name_ja” ) |
変数を設定 $数 | $数 + 1 |
End Loop | |
レコード/検索条件確定 |
以下は実際に設定したスクリプトの写真です。
freeeへの登録方法
以上でfreee連携に必要な情報は取得できましたので、実際にfreeeに登録してみます。
1.発生日
2.取引先
3.勘定科目
4.金額
5.税区分
以上の5つを記録するための取引登録用テーブルとフィールドを作成してください。
*以降、テーブル名を『テーブル取引』と記入します。
- スクリプト内容
- 以下にスクリプトと内容を記載しました。
- []にfreeeアプリ作成で取得した情報を入力してください。
- (例 -d“redirect_uri=[コールバックURI]” → -d“redirect_uri=urn:ietf:wg:oauth:2.0:oob” )
スクリプト | 内容 |
---|---|
変数を設定 名前:$発生日 | Substitute ( GetAsDate (テーブル取引::発生日 );”/”;”-“) |
変数を設定 名前:$取引先 | テーブル取引::取引先 |
変数を設定 名前:$勘定 | テーブル取引::勘定科目 |
変数を設定 名前:$金額 | テーブル取引::金額 |
変数を設定 名前:$税区分 | テーブル取引::税区分 |
If | IsEmpty ( $発生日 ) or IsEmpty ( $取引先 ) or IsEmpty ( $勘定 ) or IsEmpty ( $金額 ) |
カスタムダイアログを表示 | “顧客名・日付・勘定科目・金額は入力必須項目となります。 再度ご確認をお願いします。” |
現在のスクリプト終了 | |
End If | |
レイアウト切り替え | テーブル取引先 |
検索モードに切り替え | |
フィールド設定 テーブル取引先::取引先 | “==” & $取引先 |
エラー処理 | オン |
検索実行 | |
変数を設定 名前:$結果 | Get ( 最終エラー ) |
エラー処理 | オフ |
If | $結果 = 401 |
カスタムダイアログ | 取引先情報がありませんでした。 |
全レコードを表示 | |
全スクリプト終了 | |
End If | |
変数を設定 名前:取引先id | テーブル取引::取引先id |
レイアウト切り替え | テーブル勘定 |
検索モードに切り替え | |
フィールド設定 テーブル勘定::勘定科目 | $勘定 |
エラー処理 | オン |
検索実行 | |
エラー処理 | オフ |
If | $結果 = 401 |
カスタムダイアログ | 勘定科目情報がありませんでした。 |
全レコードを表示 | |
全スクリプト終了 | |
End If | |
変数を設定 名前:勘定id | テーブル取引::勘定id |
レイアウト切り替え | テーブル税区分 |
検索モードに切り替え | |
フィールド設定 テーブル税区分::税区分 | $税区分 |
エラー処理 | オン |
検索実行 | |
エラー処理 | オフ |
If | $結果 = 401 |
カスタムダイアログ | 入力されている税区分の情報がありませんでした。 |
全レコードを表示 | |
全スクリプト終了 | |
End If | |
変数を設定 | 名前:税区分id |
レイアウト切り替え | テーブルjson |
変数を設定 名前:$会社id | JSONGetElement (テーブルjson::事務所json ; “user.companies[0].id” ) |
テキストを挿入 ターゲット:$curl | -i -X POST \ -H “Content-Type:application/ x-www-form-urlencoded” \ -d “grant_type=refresh_token” \ -d “client_id=[Client ID]” \ -d “client_secret=[Client Secret]” \ -d “refresh_token={refresh}”\ -d “redirect_uri=[コールバックURI]” |
変数を設定 名前:$curl | Substitute ( $curl ; “{refresh}” ; テーブルjson::refresh token ) |
変数を設定 名前:$curl | Substitute ( $curl; ¶ ; “” ) |
URLから挿入 ターゲット:$結果 cURLオプション:$curl | “https://accounts.secure.freee.co.jp/public_api/token” |
フィールド設定 テーブルjson::access token | JSONGetElement ( $結果 ; “access_token” ) |
フィールド設定 テーブルjson::refresh token | JSONGetElement ( $結果 ; “refresh_token” ) |
レコード/検索条件確定 | |
テキストを挿入 ターゲット:$curl | -X POST -H “accept: application/json” -H “Authorization: Bearer {access_token}” -H “Content-Type: application/json” -H “X-Api-Version: 2020-06-15” -d “{\”issue_date\”:\”{day}\”,\”type\”:\”income\”, \”company_id\”:{会社id},\”partner_id\”:{取引先}, \”ref_number\”:\”null\”,\”details\”:[{\”tax_code\”:{税区分}, \”account_item_id\”:{勘定},\”amount\”:{金額}, \”section\”:[],\”tag_ids\”:[],\”description\”:\”\”}]}” |
変数を設定 名前:$curl | Substitute ( $curl ; “{access_token}” ; テーブルjson::access token ) |
変数を設定 名前:$curl | Substitute ( $curl ; “{会社id}” ; $会社id ) |
変数を設定 名前:$curl | Substitute ( $curl ; “{day}” ; $発生日 ) |
変数を設定 名前:$curl | Substitute ( $curl ; “{内容}” ; “” ) |
変数を設定 名前:$curl | Substitute ( $curl ; “{金額}” ; $金額 ) |
変数を設定 名前:$curl | Substitute ( $curl ; “{取引先}” ; $取引先id ) |
変数を設定 名前:$curl | Substitute ( $curl ; “{税区分}” ; $税区分id ) |
変数を設定 名前:$curl | Substitute ( $curl ; “{勘定}” ; $勘定id ) |
URLから挿入 ターゲット:$結果 cURLオプション:$curl | “https://api.freee.co.jp/api/1/deals” |
フィールド設定 テーブルjson::返ってくるjson | JSONFormatElements ( $結果 ) |
レイアウト切り替え | 元のレイアウト |
以下は実際に設定したスクリプトの写真です。
ここまでできたら完成です。
実際に動作するか確認します。
Claris FileMakerで以下の情報を作成しました。
Claris FileMakerで「freeeへ登録」スクリプトを動かした後に、freee会計のサイトを更新すると、
この様に反映させることができました。
まとめ
APIを使用して、Claris FileMakerからfreee会計へ取引情報を登録する方法を紹介いたしました。
私がClaris FileMaker初心者というのもあり、試行錯誤した結果このような内容になりました。
参考にしていただけたら嬉しいです。
お問い合せ
freeeとClaris FileMakerとの連動ができれば、独自に資金繰り表を作成したり、
未回収表の作成を行うことができるようになります。
興味がある方は、無料で相談に応じますので、お気軽にお問合せください。