はじめに
kintoneアプリを開発していて、アプリ間の連携で「これできるの?できないの?」的なことを調査したので、結果を簡単にまとめます。
異なるスペースのアプリ間でルックアップ参照できるのか?(できます)
部門ごとにkintoneのスペースを分けて、ユーザには所属している各部門のアプリだけ表示しているが、社内業務で使用するマスタデータアプリは共通スペースで一元管理にして、各部門のスペースから参照できるようにしたいといった場合を想定しています。
結論としては、参照側アプリを配置している各部門スペースのユーザを共通スペースに登録すれば、共通スペースのマスタデータアプリを参照可能です。
■部門スペースの参加メンバー
■共通スペースの参加メンバー(部門スペースと同じユーザを参加させる)
■共通スペースの店舗マスタ(マスタデータアプリ)
■部門スペースの問い合わせ管理(参照側アプリ)
・ルックアップ項目(店番号)の参照設定
・ルックアップ参照の動作
APIトークン認証(外部API呼び出し)でのレコード更新時、ルックアップ項目は更新できるのか?(できません)
レコード更新時にルックアップ項目を更新すると、関連付けられたコピー項目も更新されるので参照先のマスタデータアプリの値更新をRESTAPIを使用して反映する場合などに便利です。
今回のケースでは、マスタデータアプリの保守担当に、トランザクションアプリへの権限を与えたくない場合に、トランザクションアプリ(参照元)で発行したAPIトークン認証で外部API呼び出しを使用して、マスタデータアプリ(参照先)の更新内容を反映したかったのですが、結果としてはできませんでした。
APIトークンは、kintoneアプリ単位で発行されるため、ルックアップ項目の参照先アプリへのアクセス権が無く、参照先からの値取得ができないためエラーになります。
(補足)
kintoneのルックアップ項目は、項目自体に値を持っていて参照先のアプリで参照項目の値が変更されても反映されません。一方で画面上でルックアップ項目の「取得」押下時のダイアログでの選択や、RESTAPIによるルックアップ項目の更新時は、参照先アプリから値を取得して項目値を格納します。
REST APIでのルックアップ項目更新時は、実行時(kintoneアプリ操作時)のログインユーザの権限に依存するため、参照先アプリへのアクセス権を持つユーザでログインしていれば問題なく更新されます。
おわりに
今回の内容は、kintoneをある程度の期間運用し、アプリの追加や利用部門の拡大を進めていくようになってから向き合うことになる問題ですが、将来的に複数部門での運用や多数のアプリ連携を想定されるのであれば、導入時点で検討しておいた方が良い課題かと思います。