見出し画像

kintone ルックアップで日付をキーにしたいとき



kintoneのルックアップ

って便利

でよすね。
あらかじめアプリにデータを用意しておいて、別のアプリからそのデータを取得することができます。
同じ内容を毎回入力しなくてよくなるし、入力のたびに表現が違う いわゆる表記の揺れを防ぐこともできます。
キーを選択して、ほかのフィールドの値を引っ張てくることもできます。
(商品名を選択して単価を取得するとか)


コピー元のフィールドの種類には制限がある

そのルックアップですが、ヘルプにはこうあります。
(マスターアプリとは、ルックアップの参照先となる、データが用意されているほうのアプリです)

マスターアプリでフィールドを配置する際の参考:
ルックアップのキーにできるのは、次のフィールドに入力されたデータです。
文字列(1行)、数値、計算、ルックアップ、リンク、レコード番号

kintoneヘルプ

おっと、日付をキーにできないんですね! なんということ。。。
でも、日付をキーにして値を引っ張ってきたいときってありますよね。
そんなときは、日付フィールドの値を、文字列(1行)フィールドに 一度変換してあげると、それをルックアップのキーに指定することができます。



という記事は、すでにありました。


文字列(1行)フィールドにしたらよいことは分かりました。分かったんですが、ヘルプによると、計算フィールドもキーとして使えるようです。
それなら、日付を計算フィールドに変換してあげたら どうなるのかと思い、一応やってみたわけです。


やってみます

文字列(1行)フィールドをキーにした場合と
計算フィールドをキーにした場合を、比べてみます。


参照先のアプリ

まずは、ヘルプでいうところのマスターアプリを作ります。
フィールドは3つです。

  • 日付フィールド

  • 文字列(1行)フィールド

  • 計算フィールド

文字列(1行)フィールドでは、DATE_FORMAT関数を使用します。
計算フィールド は、日付フィールドの値そのままで、日付形式で表示します。

フォームの設定画面


ルックアップするほうのアプリ

マスターアプリを参照先としてルックアップするほうのアプリです。
フィールドは2つです。

  • ルックアップ

  • ルックアップ

コピー元のフィールドがそれぞれ違う、2つのルックアップです。

フォームの設定画面
2つのルックアップの設定画面(コピー元が違います)


これで準備ができました。


マスターアプリにレコードを登録

日付を変えて、3レコード用意しました。
フィールドの種類はバラバラですが、値の見た目は同じです

フィールド名を隠したら見分けがつかない


ルックアップをやってみる(計算)

いよいよルックアップです。
まずは、計算フィールドから日付を取得してみます。

マスターアプリの計算フィールドを取得します


レコード選択ダイアログで、1つ選択します


取得できました。。。が、しかし

マスターアプリからの取得はできました。
しかし、表示されたのは日付ではなくて数値です。


これは、

  • 計算フィールドは数値型

  • コピー元が計算フィールドなのでルックアップも数値型

  • ルックアップでは表示形式の設定がないので、UNIX時刻が数値のまま表示される

ということなのだと理解しました。。。


kintoneでのデータの型については、ヘルプに載っています。


ルックアップをやってみる(文字列)

次は、文字列(1行)フィールドから日付を取得してみます。

マスターアプリの文字列(1行)フィールドを取得します


レコード選択ダイアログで、1つ選択します


取得できました

こちらは、日付形式のまま問題なく表示されました。

  • 文字列(1行)フィールドは文字列型

  • コピー元が文字列(1行)フィールドなのでルックアップも文字列型

ということで、そのままの文字列の格好で表示されるのですね。




コピー元が計算フィールドの場合でも、レコード選択ダイアログでは日付の形式(YYYY-MM-dd)で表示されていました。これは、計算フィールドの表示形式が反映されているのでしょう。
そこから1つを選択した途端に数値での表現に変わってしまうので、混乱しそうですね。

それでも計算フィールドをコピー元にしたらよいケースってあるでしょうか。ルックアップした日付(数値扱い)を利用して計算したい場合とか?

分かりにくさと引き換えにするほどの理由はないかも。。。


まとめます

  • ルックアップフィールドのコピー元には、日付は指定できない

  • 計算式を使って、日付を 文字列(1行)フィールド か 計算フィールドに化かせば、ルックアップのコピー元に指定できる

  • ルックアップで取得したとき、コピー元が計算フィールドのときは、数値で表示される

  • ルックアップで取得したとき、コピー元が文字列(1行)フィールドのときは、コピー元の計算式のとおり(DATE_FORMAT関数の日時の形式)に表示される

コピー元は、文字列(1行)フィールドにしておいた方が、
分かりやすいですね!



最後までお読みいただき、ありがとうございました。

いいなと思ったら応援しよう!