顧問先アプリと日報アプリの2アプリ間のデータ連携についてご教示頂きたいです。
【顧問先アプリ】
・各レコードに顧問先毎の会社情報を入力しています。
・各顧問先毎に、重複しない数字で「顧問先コード」を設けています。
【日報アプリ】
・各レコードに勤務日と始業時間、就業時間を入力します。
・テーブルフォームがあり、各顧問先に対してどのような業務を行ったかを入力しています。
・テーブルフォームの各行には、顧問先アプリの顧問先コードを入力しています。
2つのアプリについては上記のような構成になっています。
日報アプリのテーブルフォームで入力した対応履歴を、
顧問先アプリの顧問先コード毎に、関連レコード一覧のように閲覧したいと考えています。
kintone標準機能では関連レコード一覧にテーブルフォームの情報を表示することができないようなのですが、
javascriptの活用等で対応可能でしたらご教示頂けますでしょうか。
どうぞ宜しくお願い申し上げます。
結構面倒な手順ですが、不可能ではないです。
前提として、関連レコードは今回使えないので、代わりにテーブルを使います。
- 【日報アプリ】レコード保存時にeventから、テーブルにある全顧問先コードを取得します。
- GET APIで【顧問先アプリ】から対象の顧問先コードのレコードを取得します。
- テーブルに追記する形で(すでにある顧問先アプリのテーブルを削除しないため)、更新するレコードを対象分作成し、PUT APIで【顧問先アプリ】を更新します。
こうすることで、擬似的に関連レコード一覧を作ることができますが、このままでは問題があります。
【日報アプリ】を更新した際の挙動が考えられていないことです。
【日報アプリ】の作成した行を、更新しないのであれば、一度作ったテーブルにチェックをつけるようにします。
(テーブルにチェックボックスを追加するなど、フラグがわかるフィールドを作る必要があります。)
1の全顧問先コード取得の際、フラグが立っているテーブルの顧問先コードは取得しないようにすることで解決できます。
- 【日報アプリ】レコード保存時にeventから、テーブルにある[チェックのついていない]全顧問先コードを取得します。
- GET APIで【顧問先アプリ】から対象の顧問先コードのレコードを取得します。
- テーブルに追記する形で、更新するレコードを対象分作成し、PUT APIで【顧問先アプリ】を更新します。
- 【日報アプリ】の更新したレコードの行のチェックボックスにチェックを付けます。
しかし、【日報アプリ】のテーブルの行を更新したら、【顧問先アプリ】も更新したいのであれば、
3のレコードを作成するときに、【顧問先アプリ】に追記だけではなく、更新の処理が必要になります。
ただし、こちらの方法は更新する必要があるので、【日報アプリ】の方にも、重複しないコードが必要になります。
そして、そのコードは【顧問先アプリ】のテーブルに載せる必要があります。
- 【日報アプリ】レコード保存時にeventから、テーブルにある全顧問先コードを取得します。
- GET APIで【顧問先アプリ】から対象の顧問先コードのレコードを取得します。
- [取得した【顧問先アプリ】のテーブルに、同じ日報アプリコードがあれば、その行を更新し、なければ追記する形でレコードを作成し、]PUT APIで【顧問先アプリ】を更新します。
すこし、複雑なため難しい説明になってしまいましたが、上記のような方法が考えられます。
@**lpj**様
いつもお世話になっております。
ご丁寧に解説頂きありがとうございました。
また、追加のみならず更新についても考慮頂き助かります。
eventやGETAPIについてもまだ知識が浅いので調べなら対応していきます。
取り急ぎお礼まで。もし進める中で詰まるところありましたらご相談させて下さいませ。
どうぞ宜しくお願い申し上げます。
「日報」アプリのテーブル部分を「日報明細」アプリに分けると、JavaScriptカスタマイズをせずに対応できます。
現状の「日報」アプリは以下のようなイメージかと存じます。
このテーブル部分を「日報明細」アプリとします。
関連レコードで参照しやすいように、「日報明細」アプリには、「日報レコード番号」と「勤務日」フィールドを追加しておきます。
そして、「日報」アプリは「日報明細」アプリを関連レコードで参照するようにします。
また、入力しやすいよう、「日報」アプリのアクションに「日報明細入力」のアクションを追加し、「日報レコード番号」と「勤務日」をコピーするよう設定します。
「日報」アプリでは、「勤務日」「始業時刻」「終業時刻」を入力してレコードを保存してから、「日報明細入力」をクリックして「日報明細」を入力します。
こうすれば、「顧問先」アプリで「日報明細」を関連レコードにより参照できます。
いかがでしょうか。
なお、『アプリの「親子関係」を理解しよう! 後編』にこのあたりの解説がありますので、よろしければご参照ください。
https://developer.cybozu.io/hc/ja/articles/212885886
『「同居親子関係(テーブル)」の制約事項』として「「関連レコード」の対象にはなりません。」とあり、それを解消するための手段として『「同居親子関係」にあるものを「独立親子関係」に変更する』という解説があります。
ご参考まで。
@中村 様
キャプチャ付きでご丁寧にアドバイス頂きありがとうございます!
非常にわかりやすく初心者としては助かります。
頂戴したアイデアですが、
アクションボタンの活用で入力を簡素化させられるのは魅力的です。
ただ、アクションボタンでの運用も一度試みたのですが、利用ユーザーからの反応が悪く。。
「一つのアプリに入力をすれば他のアプリにも自動で反映されるようにしてほしい」
というリクエストが今回のご相談の背景にありましたため、アクションボタンではない別の方法はないかを探しているところでした。
頂いたリンクも参考にしながらアイデアを練ろうと思います。
きめ細かくフォロー頂きとても助かります。ありがとうございます。