初歩的な質問で申し訳ございません。
cli-kintoneのCSVインポートを利用して作成済アプリへのupdate or insertをしたいと考えてます。
◆update:アプリ側に、csv内キー(*)と同一のレコードがある場合
◆insert:アプリ側に、csv内キー(*)と同一のレコードがない場合
単にインポートすると、insertしたいレコード(=アプリ側にキーが存在しない)場合、
–「updateKey」に指定した条件にあてはまるレコードが見つかりません。
とエラーが表示されてしまいました。
どのようなやり方があるか(そもそもcli-kintoneでは実現できない?)、ご教示いただければ幸いです。
Legacy_Account486
(cybozu developer network team(Legacy Account))
2
ATARU 様
ご質問ありがとうございます。
データの更新と追加を同時に行う場合は、
更新キーではなく、CSVでレコードIDを指定する必要があると思います。
詳細は第3回 レコードの更新をしてみようの「レコードIDを指定してレコードを更新する」をご参考ください。
cybozu Development team 様
ご回答いただきありがとうございます。わかりづらく申し訳ございません…。
ちなみに、レコードIDを利用せず、レコードの一括更新 or 新規追加を実現することは可能でしょうか?
「CSV内のレコードIDが(アプリ側に同一のIDが)あれば一括更新、CSV内のレコードIDがブランクの場合は新規追加」
になろうかと(ご案内いただいたページ)存じますが、やりたいこととしては、
「CSV内指定のIDが(アプリ側に同一のIDが)あれば一括更新、CSV内指定のIDが(アプリ側に同一のIDが)なければレコード新規追加」
というイメージです。※以下、参考図
ご教示いただければ幸いです。
ATARU 様
レコードID指定せずに、更新と登録を同時に行うことができないと思います。
レコードID指定する場合の例
CSVファイルに次のように記載すれば、
"$id"欄に空またはアプリに存在しないレコードIDの場合は新規追加、その以外場合は一括更新を行うと思います。
つまり、 "株式会社A"の行は更新、"株式会社B"の行は新規登録となります。
また、企業IDを重複不可に指定することで、一括登録の際に重複の企業IDが存在する場合、エラーとなり、更新・登録を中止します。
“$id” “企業名” “企業ID”
”1” “株式会社A” “2222” ←(1111→2222に更新)
”” “株式会社B” “4444”
追記
cli-kintoneを使わずに、カスタマイズで実現できますが、ややこしいです。
①アプリAとアプリBを用意します。
②アプリA:企業IDの重複禁止にチェックしません。
③レコードIDも更新keyも設定せずに、CSVにあるすべてのレコードをアプリAに登録します。
④カスタマイズで、アプリAからデータを取得して、取得したデータ中の企業IDがアプリBに存在するか判断します。
⑤存在する場合、更新を行い、存在しない場合はアプリBに登録します。
akika 様
ご教示いただきありがとうございました!
追記に記載いただいた内容を踏まえ、開発を進めてみます。
略儀ながらこちらの連絡を持ちまして御礼申し上げます。
どうぞよろしくお願い申し上げます。