こんにちは、エムザス ITサービス部です。
今回は、実際に経験したkintoneアプリのルックアップフィールドによって追加・更新ができなかったことについて書いていきたいと思います。
お知らせ①
🌟無料&登録不要でプラグインのお試しが可能!🌟
kintoneユーザーの皆さん!
エムザスのkintoneプラグインはもう試しましたか?🤔
エムザスでは以下のようなプラグインを開発しています!👇
デモ環境で、ほとんどの機能が今すぐお試しいただけます✨
さらに、お客様のドメインで無料で3ヶ月間、すべての機能を試すこともできます!🎉
それでは、本題に入ります!
事象
今回登場するアプリは2つ。社員情報アプリと備品アプリです。
◆社員情報アプリ

識別番号は文字列(1行)で自動計算が設定されていて、社員番号と拠点コードを連結したものになっています。
◆備品アプリ

社員識別番号はルックアップフィールドで、社員情報アプリの識別番号を参照しています。
この状態でAPIを使用して備品アプリにレコードを追加します。
社員識別番号には社員情報アプリに存在する識別番号の値をセットしてレコードを追加しようとしたのですが、ここで以下のエラーが発生してしまいました。
ルックアップの参照先から値をコピーできません。「コピー元のフィールド」に指定したフィールドの設定で「値の重複を禁止する」を選択しておく必要があります。
原因
エラーメッセージにもある通り、コピー元のフィールド(ここでは社員情報アプリの識別番号)が値の重複を禁止していないことによりエラーが発生しています。
この「値の重複を禁止する」というのはフィールドの設定のことで、これにチェックを入れると同じアプリ内のレコードで重複する値を許可しなくなります。
例)社員番号など同じ番号が振られることがないものに設定するのが有効です。

重複を禁止していない場合、同じ値の識別番号のレコードが複数ある可能性があります。
例えば社員情報アプリに識別番号が「00001」のレコードが2つあった場合、そのときにAPIで備品アプリに社員識別番号「00001」でレコードを追加しようとすると、どちらの社員レコードなのか判別がつきません。
そのため重複を禁止しておく必要があるのです。
解決策
これを解決するためには、社員情報アプリの識別番号に値の重複を禁止する設定をしてあげればいけそうな気がします。
しかし、この識別番号フィールドの設定を見てみると文字列(1行)フィールドであるにもかかわらず「値の重複を禁止する」がありません。

これはkintoneの仕様で、自動計算を有効にしていると「値の重複を禁止する」を設定することができなくなるためです。
よってそのままでは解決することができません。
解決方法はいろいろ考えられますが、社員番号と拠点コードの結合情報はそのままにしておきたい場合の2つを挙げておきます。
① 識別番号の自動計算を解除し重複を禁止する。その代わりにスクリプトで社員番号と拠点コードを結合したものを常にセットしてあげるなどの補助をする。
② 識別番号はそのまま。その代わりに重複を禁止するフィールドを他に設ける。
今回は社員番号という重複を禁止しても良さそうなフィールドがあるので②を選択するのが良さそうです。
いずれにしてもこのようにエラーが発生する状態になってしまうと、フィールドの追加・変更、スクリプトの修正を余儀なくされます。
プラグイン「EMdocMaker」でアプリの設定内容を簡単に確認
そんなときに役立つのがエムザスが開発しているkintoneプラグイン「EMdocMaker」です。
EMdocMakerを使えば現在のアプリに設定されている内容(アプリに配置されているフィールドなど)をExcelファイルとして出力したり、アプリ同士の関連性を確認することができます。
アプリにフィールドを追加したり、アプリに変更を加えたりするときに事前に確認することで、あとになって改修する手間が減らせます。
また、改修前のバージョンのアプリ情報をExcelファイルで取得しておけば、あとで戻したくなった時に間違いや漏れ無く戻すことができます。
EMdocMakerの紹介ページはこちらです。
EMdocMakerの他にもいろいろなプラグインをエムザスでは開発しています。
無料でお試しすることも可能です。是非お試しをして便利なkintoneライフをご実感ください。