条件によりレコードをマージする

横山と申します。

kintoneアプリで条件によりレコードをマージする処理を検討しています。

単一レコードです

マージするキー:地区コード+確定年月+用途コード が同じ値のレコードを合わせます

その際、数値項目は、集計します。

マージ結果は、csvで出力、データ一覧を想定しています

jscriptで作成を検討中です。どなたかご教示お願いします。

 

横山さん

cstap武井です。

 

私が考える処理フローは以下です。

  1. 一覧画面などにcsv出力ボタンを作成する。
  2. 1.のイベントの中で、当該アプリのレコードを全件検索する。
  3. ループでマージするキーが一致するもののみ数値項目を集計する。
  4. 集計したものをこちらの記事などを参考にcsv出力する。

といった辺りではないでしょうか。

やり方は色々あると思います。

 

他にも、集計結果をデータとして持つことを前提に、

レコード保存時に当該レコードとマージキーが一致するものを毎回マージし、

「kintone標準の絞り込み機能→標準のcsv出力機能で出力」といった方法でもイケそうな気がします。

(こちらの方が楽かもしれません)

横山様

1)集計元レコードと集計後レコードを別アプリに保持するか

2)集計後レコードは、レコードとして保持する必要があるか

この2点あたりがポイントになるかと思います。

1)に関しては、集計元レコードと集計後レコードを同一アプリで保持した場合、集計元レコードの記録がなくなってしまう、あるいは、構成としてわかりにくくなってしまう為、個人的には別アプリに保持したほうが良いかなと感じます。

別アプリで保持する場合は、集計元レコードの保存後イベント(JavaScript)で、別アプリに該当条件でマージした値を毎回集計して、書き込む形になると思います。

2)に関しては、目的がCSV出力とデータ一覧だけであれば、レコードとして保持しなくても、kintoneの標準集計機能で、毎回表示するだけでも良いかもしれません。

武井様

回答有難う御座います。

サンプルコードがあれば、ご教示お願いします。

jsは、始めたばかりで初心者です。 お手数をお掛けしますが、宜しくお願い致します。

当該アプリのレコードを全件検索する→ループでマージするキーが一致するもののみ数値項目を集計する

のサンプルは、御座いますか。

横山

 

 

 

松村様

連絡有難う御座います

別アプリにデータを保存するサンプルは、御座いますでしょうか。

話には、聞いておりますが、初心者で有ることでイメージが見えないので、アドバイス戴けると助かります。

 

横山

横山様

一連の流れのサンプルは私の方にはないのですが、順を追っていくと下記の様な

順番となると思います。個別のURLには個別サンプルソースがありますので、それらを

組み合わせて、試行錯誤することになるかと。

1.JavaScript側 レコード保存成功後イベント で、

新規 https://cybozudev.zendesk.com/hc/ja/articles/201941984#success

編集 https://cybozudev.zendesk.com/hc/ja/articles/202166270#success

 

2.該当条件に合致するレコードをAPIで取得して、

レコードの一括取得(クエリで条件を指定)

https://cybozudev.zendesk.com/hc/ja/articles/202331474#step2

 

3.合計した結果を、別アプリにAPIでデータ保存する。

新規レコードの場合

https://cybozudev.zendesk.com/hc/ja/articles/202166160#step1

既存レコードの場合

https://cybozudev.zendesk.com/hc/ja/articles/201941784#step1

 

こまごましており恐縮ですが、このようなイメージです。

横山です。

手順のご案内有難う御座います。

このコードは、JSで作成すれば宜しいでしょうか

ご教示お願い致します。

 

横山です。

 

松村様 手順のご案内有難う御座います。

このコードは、JSで作成すれば、宜しいでしょうか

ご教示お願いします。

 

横山様

はい。JSでの作成となります。

松村様

お疲れ様です。

1.は、レコード表示イベント又は、ボタンで指示したいのですが、サンプルは、ありますでしょうか

 

松村様

 

お世話になります

REST APIの原則は、元アプリの追加・更新1レコードに対して、保存先アプリの1レコードのみ

の処理でしょうか。 これだと処理上全てのレコードを更新操作しなければならず、現実的では、ありません。

連続処理する方法は、前の問合せの通りですが、ありますでしょうか

ご教示をお願いします。 レコード番号以外を一括更新キーにしています

尚 別アプリは、レコード削除後常にレコード追加のみで考えています。

村松様

お世話になります。

別アプリにレコードを登録する フィールド は、ルックアップ、数値以外の制限がありました。

なにか回避方法が有れば、ご教示お願いします。

 

hsy横山 さん

>REST APIの原則は、元アプリの追加・更新1レコードに対して、保存先アプリの1レコードのみ

>の処理でしょうか。 これだと処理上全てのレコードを更新操作しなければならず、現実的では、ありません。

>連続処理する方法は、前の問合せの通りですが、ありますでしょうか

>ご教示をお願いします。 レコード番号以外を一括更新キーにしています

>尚 別アプリは、レコード削除後常にレコード追加のみで考えています。

元アプリ1レコードの追加更新時に、保存先アプリが1レコードしか扱えないという制限はありません。

元アプリの追加・更新はあくまでイベントとしてとらえればよいと思います。

元アプリのイベント内にて、保存先アプリの複数レコードの参照、更新、挿入が可能です。

 

>別アプリにレコードを登録する フィールド は、ルックアップ、数値以外の制限がありました。

>なにか回避方法が有れば、ご教示お願いします。

ルックアップ、数値 も可能だったと思います。

>1.は、レコード表示イベント又は、ボタンで指示したいのですが、サンプルは、ありますでしょうか

https://cybozudev.zendesk.com/hc/ja/articles/201952870-%E7%AC%AC3%E5%9B%9E-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E8%A9%B3%E7%B4%B0%E3%81%AB%E3%82%82%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E8%A8%AD%E7%BD%AE%E3%81%97%E3%82%88%E3%81%86-

 

 

松村様

回答有難う御座います

確認してみます。