複数条件でべつのアプリの値を取得したい

背景・実現したいこと

初心者ですのでわかりずらい点があったら申し訳ございません。どうかよろしくお願いします。

フィールド内にある二つの値を使用して別アプリからルックアップしたいと考えています。

できれば自動的に値が入ってほしいです。

具体的に言うと商品名と発注数をいれるフィールドがあって、(どちらも計算フィールドで文字列結合と計算をさせています)別アプリに商品マスタがあって商品単価が入っています。

商品単価を自動でルックアップされるにはどのような方法があるでしょうか?

最初、計算にIF文で値をいれようかと思いましたが、条件が多すぎるのと商品が増えるたびに直さなければならないので断念しました・・

 

複数の条件というのがよく分かりませんが「商品名と発注数(2つの条件?)から自動ルックアップ」ですか?

商品名?でルックアップした結果呼び出された単価に発注数をかければよいのでは?

※例えばリンク先の冒頭のようなルックアップの使い方とは違いますか?
https://www.comdec.jp/comdeclab/kintone-quotation-01/

私も初心者ですので的を得た説明になっていないかも知れません。

商品名と発注数とも計算フィールドとのことですが、商品マスターをルックアップするのはどのフィールドでしたいのでしょうか?商品名でルックアップして単価を決めたいのでしょうか?商品名でルックアップしたいのであれば商品名ルックアップフィールドを作ってJavaScriptで現在の商品名フィールドを転記してやれば商品マスターから単価を設定できるのではないかと思います。

商品マスターから単価を取り込んで発注額(単価*発注数)を計算したいのでしょうか?

商品名と発注数は計算フィールドとのことですが、どのような計算をしているのでしょうか?

aoan サン

昨日貴殿の質問に対してコメントしましたが、追加で確認します。単価が商品名だけでは設定できず、発注数によって単価が変動するということでしょうか?もしそうならどのようなロジックで単価が決定できるかが決まっていれば、その内容で 商品マスタのファイルフォーマットを設定すればスクリプトを使わなくてもルックアップだけで商品単価を設定できると思います。

White様

コメントありがとうございます。また、返信が遅くなってしまい申し訳ございませんでした。

後からいただいているコメントの通り商品名だけではなく発注数によって単価が変動する仕組みです。

ルックアップですとルックアップフィールドを使用してそこから絞り込むイメージですが今回はそうではなくて

①商品名:文字列結合を行っている文字列フィールド(フィールドコード 商品名_結合)

②発注数:(フィールドコード 発注数1) + (フィールドコード 発注数 2 )

この①と②の値を使用したいのです。

伝わりにくく申し訳ございません・・・

らいと

コメントありがとうございます。また、返信が遅くなってしまい申し訳ございませんでした。

商品名だけではなく発注数によって単価が変動する仕組みなのです。

教えていただいたHPを確認しましたが当てはまるものがないようです。せっかく教えていただいたのにも関わらず申し訳ございませんでした。

商品名と発注数をキーにしたいということであれば、

商品マスタの方に
商品名フィールド
発注数フィールド

とは別にルックアップ用のキー(重複禁止する)のフィールドを準備して
たとえば
ルックアップ用のキーの値をJSカスタマイズなどで
商品名+半角スペース+発注数

商品A 1
商品A 2

ってすれば2値をキーにして取ってこれますよ。
そういう記事もどこかにあったかも・・・(見つけたら追記しておきます)

追記(記事の中で2値以上をキーにしてルックアップしてます)

https://qiita.com/juri_don/items/b70d6c136da181af0b4b

参考になればいいのですが。

aoan 様

らいとさまの提案の方法でできると思いますが、JavaScriptでプログラムしなくても商品マスターのファイルフォーマットを下記のようにすれば単純なルックアップでできると思います。先日確認したように商品名と発注数で単価がどのように決まるのか?がどのようなロジックになっているのでしょうか?

| 商品マスターのファイルフォーマット(案) |
| フィルド名 | フィールドコード | 備考 |
| ①商品名 | shohimmei | |
| ②発注数 | hatchusu | |
| 商品単価 | shohintanka | ルックアップ用のキー |
| 単価 | tanka | 商品名と発注数により計算式で単価が決まるロジックがあれば計算フィールドとして計算式で単価を決める。単価が決まっているなら値を登録 |

ごめんなさい。もともと自動でルックアップしたいとのことでしたね。自動でルックアップするところは、スクリプトで記述して下さい。

らいと様

ありがとうございます♪確かにこの方法なら複数条件でも簡単にルックアップできそうです!

ルックアップにこのルックアップ用キーを自動でルックアップに入れるコードが書いてあるサイト等ご教示いただけたら幸いです。

何度もお手数ですがよろしくお願いいたします。

White

ありがとうございます♪私の理解力がなく申し訳ないのですがルックアップ用単価というのはどういうものなのでしょうか?

単価が決まるのは以下の画像の様な感じです。

なので一度入力された発注数をIF文で計算させてIF(発注数<=10,10,IF(発注数<=30,30,IF(発注数<=100,100,“”)))のように計算したものを発注数ルックアップ用として使用する流れにしています。

自動でルックアップするところは、スクリプトで記述しするのに参考になるサイトなどあればご教示いただけると幸いです。

何度もお手数ですがよろしくお願いいたします。

7042226900249 さん

それはご自分で探してください

ヒントを言うと、developer network 内に書いていますよ。
それを探すことでaoanさん自身のスキルアップにもなるかと思います。

らいと

色々とありがとうございました!探してみます!

|

下記のような形でどうでしょうか?私もまったくの初心者で7月からExcelからキントーンへの移行を準備している者です。専門家の方に見られたら恥ずかしいです。

商品コードを手入力するなら全くの基本機能でできますが、商品コードの誤入力をしないようにするには少しカスタマイズが必要なように思います。ご確認下さい。

|

| |   |
| |   |   |

| (() => { |
|   ‘use strict’; |
|   /** JavaScriptを実行する対象となるイベント */ |
|   const events = [ |
|    ‘app.record.create.change.商品単価コードI’, |
|   ]; |
|  // 処理をイベントに登録します |
|    kintone.events.on(events, (event) => {  |
|    const record = event.record; //recordフィールドコードとフィールドの値などのレコードの情報を含むオブジェクト |
|     // 商品単価コードLを商品単価コードIから設定 |
|   record[‘商品単価コードL’].value = record[‘商品単価コードI’].value; //取組番号1設定 |
|   record[‘商品単価コードL’].lookup = true; // または record[‘ルックアップ’][‘lookup’] = ‘UPDATE’; |
|   return event; |
| }); |
| })(); |

|
|   |   |   |   |
|   |   |   |   |
|   |   |   |   |
|   |   |   |   |
|   |   |   |   |
|   |   |   |
|   |   |   |   |
|   |   |   |   |
|   |   |   |   |
|   |   |   |   |
|   |   |   |   |
|   |   |   |   |

|

|

White

丁寧にありがとうございます!

1か月ほどで色々習得されるなんてとっても尊敬いたします!

皆さんに教えていただいたことを基に私も頑張りたいと思います。ありがとうございました。