# 【Kintone】ファイルの一括登録（読み込み）を条件付きでした

**URL:** <https://community.cybozu.dev/t/topic/6379>\
**Category:** kintone 開発相談\
**Created:** [2020 年 5 月 27 日午前 2:04 UTC](https://community.cybozu.dev/t/topic/6379 "2020-05-27T02:04:23Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account974](https://avatars.discourse-cdn.com/v4/letter/l/3e96dc/32.png) [@Legacy\_Account974](https://community.cybozu.dev/u/Legacy_Account974)\
**Post date:** [2020 年 5 月 27 日午前 2:04 UTC](https://community.cybozu.dev/t/topic/6379/1 "2020-05-27T02:04:23Z")

</div>

[https://jp.cybozu.help/k/ja/user/using\_app/import\_records/import\_csv.html](https://jp.cybozu.help/k/ja/user/using_app/import_records/import_csv.html)

&nbsp;

上記のページを参考にファイルを読み込むことで一括で更新できることがわかりました。現在、xlsxファイルを読み込ませることで特定のフィールドの更新をかけようとしています。

一意のフィールドが例えばa,b,c,dという項目が入っていてエクセル側には

- a,1
- b,2
- e,3

のような情報の持ち方をしていて、このエクセルファイルを読み込むことで、Kintone側のa,bそれぞれの値を持つレコードについて、他のフィールドにエクセル側の1や2といった紐づく値を取得することができました。

ここで問題は、Kintone側には情報がないeについてはなにも取得したくないのですが、あらたにeと3という値を持つレコードが生成されてしまいます。これをKintoneにあるa,bだけという条件で一括更新するような方法をさがしております。

&nbsp;

どなたかアドバイスをお願いいたします。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1293](https://avatars.discourse-cdn.com/v4/letter/l/bbce88/32.png) [@Legacy\_Account1293](https://community.cybozu.dev/u/Legacy_Account1293)\
**Post date:** [2020 年 5 月 27 日午前 10:46 UTC](https://community.cybozu.dev/t/topic/6379/2 "2020-05-27T10:46:38Z")

</div>

エクセルからe,3の行を消してアプリにインポートする対応では不十分なのでしょうか。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account974](https://avatars.discourse-cdn.com/v4/letter/l/3e96dc/32.png) [@Legacy\_Account974](https://community.cybozu.dev/u/Legacy_Account974)\
**Post date:** [2020 年 5 月 27 日午前 11:19 UTC](https://community.cybozu.dev/t/topic/6379/3 "2020-05-27T11:19:19Z")

</div>

コメントを頂き誠にありがとうございます。

説明不足で申し訳ございません。実際にはeがkintoneのアプリケーション側のレコードの存在するかはわからず、より厳密に申し上げれば数百件の行数がエクセルには存在しており、これをKintone側と照合してから読み込むのは非現実的な作業という状況でございます。

そのような事情があるため、エクセルのVlookUpのような感覚で該当があればそのレコードだけ更新したいという発想となります。

宜しくお願い申し上げます。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1293](https://avatars.discourse-cdn.com/v4/letter/l/bbce88/32.png) [@Legacy\_Account1293](https://community.cybozu.dev/u/Legacy_Account1293)\
**Post date:** [2020 年 5 月 28 日午前 12:49 UTC](https://community.cybozu.dev/t/topic/6379/4 "2020-05-28T00:49:45Z")

</div>

インポート先アプリのレコードをエクスポートしてExcelで突き合わせる方法が楽だと思いますが、手作業により誤る可能性がありますので、  
標準機能だけでできる以下の方法はいかがでしょうか

1. インポート先のアプリ（以下アプリA）をコピーしてアプリBを作成する
2. アプリAから全レコードエクスポートしてアプリBにインポートする
3. エクセルファイルをアプリBにインポートする
4. アプリBから［更新日時 \> 3のインポートが完了した日時］ を条件にレコードをエクスポートする
5. 4でエクスポートしたファイルをアプリAにインポートする

---

<div class="post-metadata">

**Author:** ![Legacy\_Account974](https://avatars.discourse-cdn.com/v4/letter/l/3e96dc/32.png) [@Legacy\_Account974](https://community.cybozu.dev/u/Legacy_Account974)\
**Post date:** [2020 年 5 月 28 日午前 1:09 UTC](https://community.cybozu.dev/t/topic/6379/5 "2020-05-28T01:09:49Z")

</div>

コメントありがとうございます。なるほど、一旦Bをかましてやるのですね。

因みに標準機能ではなくAPIを利用する方法も検討対象に入っているのですがPUTを使ってBody部分でid(a,b)が一致するものを条件としてループさせて更新をかけていくようなアプローチはあまり現実的ではないでしょうか？（総当たりになるので、処理は重くなることが予想されます）

&nbsp;

ただ、その方法でも毎回JSONコードをJavascriptに貼って実行するのは自分じゃなきゃできないので、一般ユーザーにボタンを押せば対応できるようになるのかが不明ではありますが・・・

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1293](https://avatars.discourse-cdn.com/v4/letter/l/bbce88/32.png) [@Legacy\_Account1293](https://community.cybozu.dev/u/Legacy_Account1293)\
**Post date:** [2020 年 5 月 28 日午前 1:21 UTC](https://community.cybozu.dev/t/topic/6379/6 "2020-05-28T01:21:29Z")

</div>

APIを利用するのであれば、ご提示されている方法でVBAで実装するとユーザーはボタンを押すだけで済みます。  
その際、APIの実行回数が少なくなるように、エクセル上のキーをもとにkintoneからレコードを一括で抽出し突き合わせてから、  
更新するのが良いと思います。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account974](https://avatars.discourse-cdn.com/v4/letter/l/3e96dc/32.png) [@Legacy\_Account974](https://community.cybozu.dev/u/Legacy_Account974)\
**Post date:** [2020 年 5 月 28 日午前 1:33 UTC](https://community.cybozu.dev/t/topic/6379/7 "2020-05-28T01:33:56Z")

</div>

あ、Kintone側ではなく落としたデータのエクセル側のVBAで処理するということですね。ありがとうございます。
