Garoonスケジュール標準項目の”会社情報・会社名”をKintoneアプリに紐づける方法 伺い

目下、Garoonのスケジュール情報の登録や変更時に、Kintoneアプリに自動転記するGaroon pluginを開発しつつあります。

ところが、Garoonの標準項目である”会社情報”の”会社名”の転記先のKintoneアプリでは、会社名をLookup型カラムとしており、Kintoneアプリの入力時や、Kintone rest APIでのレコード更新で、入力制限があり、Garoonのスケジュール入力時に、”会社名”をスペルミスしてしまうと、その転記先のKIntoneアプリのレコード更新処理が、中断しています。
※添付画像の 赤い線で示した箇所 参照。

一方、”Garoonの予定とkintone アプリのレコード情報の紐付け”機能で 追加した、”会社名”の方は、kintoneアプリのLookup制約に違反しないような値だけを入力できます。
しかしながら、この方法で追加した”会社名”という項目は、Garoonスケジュール標準項目の”会社情報・会社名”とは別項目であり、Garoonスケジュール標準項目の”会社情報・会社名”とは別に、2重に”会社名”の入力をすることは、避けたいと考えています。
※添付画像の 青い線で示した箇所 参照。

そこで、Garoonの標準項目である”会社情報”の”会社名”について、KintoneアプリのLookup制約に違反しないような値だけをGaroon画面で選択入力できるような、カスタマイズ方法が在れば、教えていただけませんでしょうか?


自分で調べた範囲では、Cybose社が提供している「GaroonのKintoneコネクタ」が、上記の対策に有用な機能が在るかのようにも 観えましたが、残念ながら「Kintoneから検索した結果を表形式で表示する」のであって、表形式で 複数候補が表示されるかもしれない”会社名”の内の1データを、Garoonスケジュール標準項目の”会社情報・会社名”に 格納できるような、対話操作を含むシナリオは書けないようでした。

こんにちは。
手元で検証は出来ていませんが、以下のような処理を実装すれば実現できるのかなと思います。

  1. garoon.schedule.event.getHeaderSpaceElement() で画面上部にドロップダウンと検索窓を設置

  2. garoon.base.proxy.sendでkintone REST API を実行してルックアップデータを取得

  3. 2.のデータからドロップダウンリスト生成

  4. ドロップダウンリストのチェンジイベントで、5.以降の処理を実行

  5. garoon.schedule.event.get()で予定データ取得

  6. 5.で選択された値をgaroon.schedule.event.set(event)”会社情報”の”会社名” ( companyInfo.name)に設定

イベントは下を使えば行けると思います。

応答、ありがとうございます。

提示された方法は、下記の観点で難しくなりそうなので、代替え実装を考えました。
★garoonのスケジュールの編集画面は、標準のままでは狭くてドロップダウンを追加しにくい

★もし、ポップアップ・ウィンドウにドロップダウン表示する場合、 画面遷移に合わせて Kintoneのlookup先からfetchした値をキャッシュしたり、kintoneのLookup先からの選択入力画面のような検索や絞込み機能も含む、リソース管理の追加も要りそうです。

★kintone REST API のQuery条件を組み立てるための、自作garoon plugin側でのconfig画面の設計など、「既に、Kintoneアプリ側のフォームレイアウトのLookup型のカラム定義情報として設定済みの情報を、手動で転記させるのか!」と言われることを避けるような、合理的なconfig設定画面の実装も、面倒。


そこで、とりあえず、下記の実装で、当初の課題(kintone側でlookupエラーが発生し、garoonイベントの保存が中断)は解消しました。
Garoonの標準項目である”会社情報”の”会社名”に加えて
Garoonの予定とkintone アプリのレコード情報の紐付け”機能で 追加した、”会社名”も表示項目に追加し、garoonのKntone連携機能によるドロップダウンリストから、”会社名”を選択入力する。

・”変更を保存"のgaroonのイベントハンドラの中で、
Garoonの予定とkintone アプリのレコード情報の紐付け”機能で 追加した”会社名”の値を、
Garoonの標準項目である”会社情報”の”会社名”に、
garoon.schedule.event.set(event)上書きする。

・”Garoonの予定とkintone アプリのレコード情報の紐付け”という、Garoon標準機能による設定を活用することで、自作garoon pluginのconfig画面の入力項目は、転記先アプリのアプリIDまで、設定項目を最小化できる。

※この方式の場合、リソース管理をgaroonに御任せできるので、安定動作はしますが、
見栄えは良くないので、エンドユーザに、許容できるか否かの伺いを立てています。

代替実装について詳細に教えていただきありがとうございます!

確かに、私の方法だといろいろ考慮が足りていませんでした。。
koseさんの方法が管理もしやすいと思うので、エンドユーザーには許容してほしいですね