kintone ルックアップで日付をキーにしたいとき
kintoneのルックアップ
って便利
でよすね。
あらかじめアプリにデータを用意しておいて、別のアプリからそのデータを取得することができます。
同じ内容を毎回入力しなくてよくなるし、入力のたびに表現が違う いわゆる表記の揺れを防ぐこともできます。
キーを選択して、ほかのフィールドの値を引っ張てくることもできます。
(商品名を選択して単価を取得するとか)
コピー元のフィールドの種類には制限がある
そのルックアップですが、ヘルプにはこうあります。
(マスターアプリとは、ルックアップの参照先となる、データが用意されているほうのアプリです)
おっと、日付をキーにできないんですね! なんということ。。。
でも、日付をキーにして値を引っ張ってきたいときってありますよね。
そんなときは、日付フィールドの値を、文字列(1行)フィールドに 一度変換してあげると、それをルックアップのキーに指定することができます。
という記事は、すでにありました。
文字列(1行)フィールドにしたらよいことは分かりました。分かったんですが、ヘルプによると、計算フィールドもキーとして使えるようです。
それなら、日付を計算フィールドに変換してあげたら どうなるのかと思い、一応やってみたわけです。
やってみます
文字列(1行)フィールドをキーにした場合と
計算フィールドをキーにした場合を、比べてみます。
参照先のアプリ
まずは、ヘルプでいうところのマスターアプリを作ります。
フィールドは3つです。
日付フィールド
文字列(1行)フィールド
計算フィールド
文字列(1行)フィールドでは、DATE_FORMAT関数を使用します。
計算フィールド は、日付フィールドの値そのままで、日付形式で表示します。
ルックアップするほうのアプリ
マスターアプリを参照先としてルックアップするほうのアプリです。
フィールドは2つです。
ルックアップ
ルックアップ
コピー元のフィールドがそれぞれ違う、2つのルックアップです。
これで準備ができました。
マスターアプリにレコードを登録
日付を変えて、3レコード用意しました。
フィールドの種類はバラバラですが、値の見た目は同じです
ルックアップをやってみる(計算)
いよいよルックアップです。
まずは、計算フィールドから日付を取得してみます。
マスターアプリからの取得はできました。
しかし、表示されたのは日付ではなくて数値です。
これは、
計算フィールドは数値型
コピー元が計算フィールドなのでルックアップも数値型
ルックアップでは表示形式の設定がないので、UNIX時刻が数値のまま表示される
ということなのだと理解しました。。。
kintoneでのデータの型については、ヘルプに載っています。
ルックアップをやってみる(文字列)
次は、文字列(1行)フィールドから日付を取得してみます。
こちらは、日付形式のまま問題なく表示されました。
文字列(1行)フィールドは文字列型
コピー元が文字列(1行)フィールドなのでルックアップも文字列型
ということで、そのままの文字列の格好で表示されるのですね。
コピー元が計算フィールドの場合でも、レコード選択ダイアログでは日付の形式(YYYY-MM-dd)で表示されていました。これは、計算フィールドの表示形式が反映されているのでしょう。
そこから1つを選択した途端に数値での表現に変わってしまうので、混乱しそうですね。
それでも計算フィールドをコピー元にしたらよいケースってあるでしょうか。ルックアップした日付(数値扱い)を利用して計算したい場合とか?
分かりにくさと引き換えにするほどの理由はないかも。。。
まとめます
ルックアップフィールドのコピー元には、日付は指定できない
計算式を使って、日付を 文字列(1行)フィールド か 計算フィールドに化かせば、ルックアップのコピー元に指定できる
ルックアップで取得したとき、コピー元が計算フィールドのときは、数値で表示される
ルックアップで取得したとき、コピー元が文字列(1行)フィールドのときは、コピー元の計算式のとおり(DATE_FORMAT関数の日時の形式)に表示される
コピー元は、文字列(1行)フィールドにしておいた方が、
分かりやすいですね!
最後までお読みいただき、ありがとうございました。