1
/
5

【kintone/krewData】krewDataの出力アプリ設定で「値の重複を禁止するが有効になっている必要があります」とエラーが出る場合の解決法


今回は、最近案件で使用していたkrewData(kintoneプラグイン)についてお話をしたいと思います。

目次 [非表示]


krewDataとは

今kintoneプラグインの一種で、アプリのデータはもちろん、
外部ファイルなどからもデータを取得し、集計・計算・出力などを行うことができます。

KrewData公式サイトはこちら


発生した現象

アプリA、B、Cがあります。

アプリAにある数値フィールドをアプリBのルックアップフィールドでキーとして参照しており、
さらにそのルックアップフィールドをアプリCのルックアップフィールドでキーとして参照しています。



なぜアプリCからアプリAへ直接ルックアップを行わないのかというと、
アプリCにてルックアップのリンクを押下した際、アプリBへ遷移してほしいからです。


また、大本となるアプリAの数値フィールドに、「値の重複を禁止する」というオプションを設定しておきます。



これを設定したフィールドは、レコード間で重複する値を登録できなくなるので、
レコードを特定するキーとして使用できるようになります。


この状態でkrewDataの出力アプリ設定にて、
アプリCの当該ルックアップフィールドを更新キーとして設定すると・・・



なんか怒られました。

直接のルックアップ先になっているアプリBにも「値の重複を禁止する」を設定する必要があるのかな?

アプリBの設定画面を開いて、ルックアップフィールドの設定を変更します。



「値の重複を禁止する」の設定項目がない・・・

どうやらルックアップフィールドには「値の重複を禁止する」を設定することができないようです。


どうしようもないので公式に問い合わせ

色々試してみましたがどうしようもなくなり、krewDataのサポートページから問い合わせることに。

数日後いただいた回答の要点をまとめると


  • ルックアップフィールドの値を変更(今回の場合、アプリCのルックアップフィールド)する際には、
    コピー元フィールド(アプリBのルックアップフィールド)の「値の重複を禁止する」を設定する必要がある。
  • これはkintone APIの仕様のため、変更することはできない。


詰みました。前述の通りルックアップフィールドには「値の重複を禁止する」を設定できないため、どうしようもありません。


代替案もいくつか添えていただいていましたが


  • アプリCからアプリAを直接参照する
    • これは前述の通り。アプリC→アプリBへ遷移できなくなるため×。
  • アプリCをルックアップフィールドではなく文字列(1行)にする。
    • アプリAの内容をルックアップで取得する必要があるため×。


と、いずれもやりたいこととは少しマッチしない内容でした。


仕方がないので妥協案を考える

できないことはできないので、妥協案を考えることに。


まず今回の必須要件と、変更不可の仕様を整理します。


必須要件

  • アプリA→B→Cとルックアップフィールドで紐づけ、アプリCからアプリAの情報を取得できるようにする。
  • ルックアップフィールドのリンクを押下した際、アプリCからアプリB、アプリBからアプリAへ遷移できるようにする。

変更不可の仕様

  • ルックアップフィールドの値を変更する場合、コピー元フィールドの「値の重複を禁止する」を設定する必要がある。
  • 「値の重複を禁止する」は数値や文字列フィールドにしか設定できず、ルックアップフィールドに設定することはできない。


まず、要件を満たすため、アプリA→B→Cのルックアップを解除することはできません。

そして、仕様のため、コピー元には「値の重複を禁止する」を設定する必要があり、
これはルックアップフィールドに設定することはできません。


つまり、
アプリ間のルックアップの関係性は保ったまま、アプリB→Cのルックアップ元を数値フィールドにすれば
実現できそうです。


とはいえアプリBのルックアップを解除するわけにもいかないので、
ルックアップでキーとして設定しつつ、同じ値をアプリBに新設した数値フィールドにセット。
アプリCのルックアップからはそちらを参照するようにしました。



新設した数値フィールドに「値の重複を禁止する」を設定することも忘れずに。


この状態でkrewDataの設定を再度確認すると・・・



無事エラーが消えました!


実際に出力してみても問題なく、
アプリC→B→Aとルックアップのリンクを押下して遷移することも可能に。

目的を達成できた代償として、アプリBにルックアップフィールドの内容と重複するフィールドが増えてしまいましたが、

アプリの最下部に【krewData集計用】みたいな名前をつけて置いておいてもいいし、JSやプラグインで非表示にしてもいいし、

そこまで影響は大きくないのではないかと思います。


最後に

kintoneやkrewDataはすごく便利で使いやすいツールですが、こんな感じで仕様の壁にぶつかることもよくあります。

それをうまく回避しながら、最小の影響で要件を満たす方法を考える必要があり

そこが難しくも面白いところだなと思います!


ロジカルスタジオではエンジニアを募集しています。

気になる方は↓こちら↓をチェック!!

PHPエンジニア
即戦力募集中!PHPで世界をちょっとよくしたいエンジニアをWanted!
ロジカルスタジオは、テクノロジーとデザインの視点からクライアントの課題解決をめざす、大阪のクリエイティブプロダクションです。 クライアントの期待を超えて「もっと良くなる、を見つける」のが私たちのスタイル。企画・提案からデザイン制作・システム構築、運用、改善提案をワンストップで行えるのが一番の強みです。近年ではその実績と品質が評価され、案件も急増しています。 代表の古川が掲げる企業理念は「絆を大切に、周りの人を豊かにし、社会に貢献する」。 私たちはこのミッションを推進するため、「新しい技術へのチャレンジ精神」を軸に、「切磋琢磨する仲間」と「働きやすい職場環境」を整え、「成長と可能性を大切にする風土」を育ててきました。 2019年9月に増床し、外部向けのセミナーにも活用できるカンファレンスルームを拡充。スタッフによる公式ブログや、マスコットキャラクター「ロージー&カール」によるTwitterなど、情報発信も強化しています。 可能性の芽をすくい上げられるこの場所を、より大きくしていきたい。 私たちと一緒に、このビジョンを実現しませんか。
株式会社ロジカルスタジオ


株式会社ロジカルスタジオ's job postings
9 Likes
9 Likes

Weekly ranking

Show other rankings
Invitation from 株式会社ロジカルスタジオ
If this story triggered your interest, have a chat with the team?