# テーブル内の最安値を求め、各フィールドに抽出したい

**URL:** <https://community.cybozu.dev/t/topic/8272>\
**Category:** kintone 開発相談\
**Created:** [2023 年 10 月 30 日午前 5:55 UTC](https://community.cybozu.dev/t/topic/8272 "2023-10-30T05:55:54Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![KAZUHITO\_SASAKI](https://avatars.discourse-cdn.com/v4/letter/k/43a26b/32.png) [@KAZUHITO\_SASAKI](https://community.cybozu.dev/u/KAZUHITO_SASAKI)\
**Post date:** [2023 年 10 月 30 日午前 5:55 UTC](https://community.cybozu.dev/t/topic/8272/1 "2023-10-30T05:55:55Z")

</div>

■実現したいこと  
発注履歴テーブル内のデータを参照し、一番価格の安い行の情報を別のフィールドに転記したい。

■エラーなど  
実行した際に、エラーなどは出ませんが、最安値フィールドに[object Object]と表示され、正しい値が転記されません。

■実行したコード

(function () {  
“use strict”;  
kintone.events.on([  
‘app.record.edit.show’,  
‘app.record.create.show’  
], function (event) {

```
    const record = event.record;
    let price_row = (record.最安値.value) ? parseInt(record.最安値.value) : null; //三項演算子(条件式?trueの場合の処理:falseの場合の処理)

    if (price_row == null) {
        price_row = record.発注履歴.value[0].value.発注単価;
    }

    for (let i = 0; i < record.発注履歴.value.length; i++) {
        if (price_row >= record.発注履歴.value[i].value.発注単価) {
            price_row = record.発注履歴.value[i].value.発注単価;

            record.最安値.value = price_row;
            record.登録年月日_最安値.value = record.発注履歴.value[i].value.発注日付;

        }
    }

    return event;

});

```

})();

---

<div class="post-metadata">

**Author:** ![aaa](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/aaa/32/277_2.png) [@aaa](https://community.cybozu.dev/u/aaa)\
**Post date:** [2023 年 10 月 30 日午前 6:21 UTC](https://community.cybozu.dev/t/topic/8272/2 "2023-10-30T06:21:44Z")

</div>

テーブルの値は、  
`record.発注履歴.value[0].value.発注単価.value`  
のようになります。

関係なさそうな一部コードを削っています。

```javascript
(() => {
    "use strict";

    kintone.events.on(['app.record.edit.show', 'app.record.create.show'], event => {
        const { record } = event;

        let priceRow = parseInt(record['最安値'].value)
            || record['発注履歴'].value[0].value['発注単価'];

        for (let i = 0; i < record['発注履歴'].value.length; i++) {
            const orderPrice = record['発注履歴'].value[i].value['発注単価'].value;

            if (priceRow >= orderPrice) {
                priceRow = orderPrice;
                record['最安値'].value = priceRow;
            }
        }

        return event;
    });
})();

```

1. 

イベントの指定で、`app.record.create.show`でも動作するのかどうか？よくわかりませんでした。

1. 

```javascript
    let price_row = (record.最安値.value) ? parseInt(record.最安値.value) : null; //三項演算子(条件式?trueの場合の処理:falseの場合の処理)

    if (price_row == null) {
        price_row = record.発注履歴.value[0].value.発注単価;
    }

```

について  
わざと冗長に書いているのか、この場に貼り付けるように書き換えたときに間違えたのか区別が付きませんでした。

---

<div class="post-metadata">

**Author:** ![aaa](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/aaa/32/277_2.png) [@aaa](https://community.cybozu.dev/u/aaa)\
**Post date:** [2023 年 10 月 30 日午前 6:29 UTC](https://community.cybozu.dev/t/topic/8272/3 "2023-10-30T06:29:16Z")

</div>

質問者の最初のコード  
（表示が崩れているので整形して載せておきます）

```javascript
(function () {
    "use strict";
    kintone.events.on([
        'app.record.edit.show',
        'app.record.create.show'
    ], function (event) {

        const record = event.record;
        let price_row = (record.最安値.value) ? parseInt(record.最安値.value) : null;

        if (price_row == null) {
            price_row = record.発注履歴.value[0].value.発注単価;
        }

        for (let i = 0; i < record.発注履歴.value.length; i++) {
            if (price_row >= record.発注履歴.value[i].value.発注単価) {
                price_row = record.発注履歴.value[i].value.発注単価;

                record.最安値.value = price_row;
                record.登録年月日_最安値.value = record.発注履歴.value[i].value.発注日付;

            }
        }

        return event;

    });
})();

```

---

<div class="post-metadata">

**Author:** ![KAZUHITO\_SASAKI](https://avatars.discourse-cdn.com/v4/letter/k/43a26b/32.png) [@KAZUHITO\_SASAKI](https://community.cybozu.dev/u/KAZUHITO_SASAKI)\
**Post date:** [2023 年 10 月 31 日午前 7:11 UTC](https://community.cybozu.dev/t/topic/8272/4 "2023-10-31T07:11:19Z")

</div>

aaa様

返信ありがとうございます。  
無事、動作確認できました。

冗長した表現になっていたのは、試行錯誤しているうちに無駄なコードをいれてしまっておりました。

ありがとうございました。

---

<div class="post-metadata">

**Author:** ![aaa](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/aaa/32/277_2.png) [@aaa](https://community.cybozu.dev/u/aaa)\
**Post date:** [2023 年 10 月 31 日午前 7:20 UTC](https://community.cybozu.dev/t/topic/8272/5 "2023-10-31T07:20:09Z")

</div>

前提条件がわからないので、  
質問者の環境・データの投入の仕方によっては  
はじめの書き方でないとだめかも知れません  
という意味でした。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/d5c841c3c5a6cb66eed514001c1b45147c9e1f4f.png) [@system](https://community.cybozu.dev/u/system)\
**Post date:** [2023 年 11 月 3 日午前 7:20 UTC](https://community.cybozu.dev/t/topic/8272/6 "2023-11-03T07:20:52Z")

</div>

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。
