# 追加した項目の初期値を過去のデータへ一括入力するにはどうすれば良いでしょうか。

**URL:** <https://community.cybozu.dev/t/topic/5246>\
**Category:** kintone 開発相談\
**Created:** [2021 年 9 月 6 日午前 8:02 UTC](https://community.cybozu.dev/t/topic/5246 "2021-09-06T08:02:29Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2199](https://avatars.discourse-cdn.com/v4/letter/l/a88e4f/32.png) [@Legacy\_Account2199](https://community.cybozu.dev/u/Legacy_Account2199)\
**Post date:** [2021 年 9 月 6 日午前 8:02 UTC](https://community.cybozu.dev/t/topic/5246/1 "2021-09-06T08:02:29Z")

</div>

計算フィールドは問題なく一括更新できるようになったのですが、例えば、フォームを追加し、初期値設定をした場合、追加前のレコードの値を初期値になるよう一括入力する方法はあるのでしょうか。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2021 年 9 月 7 日午前 5:35 UTC](https://community.cybozu.dev/t/topic/5246/2 "2021-09-07T05:35:11Z")

</div>

NSさん

お世話になっております。

\> 計算フィールドは問題なく一括更新できるようになった  
こちらは、REST APIで更新しているということでしょうか？  
計算フィールドについては、空更新で自動的に計算が行われているのかと思います。  
その他のフィールドについては、明示的に値を指定すれば良いかと思います。  
[https://developer.cybozu.io/hc/ja/articles/201941784#step2](https://developer.cybozu.io/hc/ja/articles/201941784#step2)  
[https://developer.cybozu.io/hc/ja/articles/204537310](https://developer.cybozu.io/hc/ja/articles/204537310)

初期値の値を動的に取得したいということであれば、フォームの設定の取得APIを用いれば良いかと思います。  
[https://developer.cybozu.io/hc/ja/articles/204783170](https://developer.cybozu.io/hc/ja/articles/204783170)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2199](https://avatars.discourse-cdn.com/v4/letter/l/a88e4f/32.png) [@Legacy\_Account2199](https://community.cybozu.dev/u/Legacy_Account2199)\
**Post date:** [2021 年 9 月 16 日午前 2:33 UTC](https://community.cybozu.dev/t/topic/5246/3 "2021-09-16T02:33:52Z")

</div>

江田様

返信が遅くなり、申し訳ございません。  
ご丁寧にありがとうございます。

REST APIで更新しています。  
空更新で探して見つけたコードを内容がわからないまま、  
コピペして利用しているので、具体的に何をしているのか、  
ほぼわからないですが・・・

初期値の反映は「properties.（フィールドコード）.defaultValue」を、  
値に指定すれば良いのですね。ありがとうございます。

この場合、新たに追加された項目だけ、初期値を入力するということは、  
可能なのでしょうか。

例：  
項目A・・・初期値入力済み  
項目B・・・初期値ではない値入力済み

この状態のデータが200件あったとして、

項目A・・・初期値入力済み  
項目B・・・初期値ではない値入力済み  
項目C・・・新規追加した項目で、全データの一括して初期値を反映する。

このようなことを行うのですが、  
項目の増減がたびたび起こるので、毎回コードを編集せず、  
追加された項目のフィールドコードを自動的に取得して、  
初期値を反映するというのは、可能でしょうか。

質問が重なり、申し訳ございません。  
お手すきであればでかまいませんので、教えていただけると嬉しいです。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2021 年 9 月 16 日午前 9:06 UTC](https://community.cybozu.dev/t/topic/5246/4 "2021-09-16T09:06:44Z")

</div>

NSさん

お世話になっております。

propertiesの各プロパティについて処理を行うようなコードにしておけば、可能かと思います。

[Object.values()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/values)などを用いてpropertiesを配列化して、ループ処理させるといった方法があるかと思います。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2199](https://avatars.discourse-cdn.com/v4/letter/l/a88e4f/32.png) [@Legacy\_Account2199](https://community.cybozu.dev/u/Legacy_Account2199)\
**Post date:** [2021 年 9 月 17 日午前 12:35 UTC](https://community.cybozu.dev/t/topic/5246/5 "2021-09-17T00:35:30Z")

</div>

江田様  
ありがとうございます。

私の知識が追いつかないのですが、流れとしては、  
①新規追加された項目だけを見つける。  
②①の項目が空白だった場合、初期値を指定。  
ということでしょうか。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2021 年 9 月 17 日午前 1:11 UTC](https://community.cybozu.dev/t/topic/5246/6 "2021-09-17T01:11:49Z")

</div>

NSさん

お世話になっております。

認識がずれていました。申し訳ございません。

①はなく  
②’空白のフィールドはすべて、初期値を指定。  
という認識でした。

すべての空白のフィールドに初期値が入力されるのが困るという場合は、仰る通り過去のフォーム設定と比較する必要がありますね。  
[フォームの設定の取得API](https://community.cybozu.dev/hc/ja/articles/204783170)では過去のフォーム設定は取得できなそうなので、工夫が必要ですね。

初期値の入力処理をする際に、その時点で存在しているフィールドコードを保存しておく(保存先は、別に用意したアプリなど)  
次に初期値の入力処理をする際は、保存したフィールドコードと現在のフォーム設定を比較する

というのはいかがでしょうか？

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2199](https://avatars.discourse-cdn.com/v4/letter/l/a88e4f/32.png) [@Legacy\_Account2199](https://community.cybozu.dev/u/Legacy_Account2199)\
**Post date:** [2021 年 9 月 17 日午前 1:42 UTC](https://community.cybozu.dev/t/topic/5246/7 "2021-09-17T01:42:47Z")

</div>

江田様

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

初期値を外して、空白にするような使い方をするフィールドが無い限り、  
元々初期値設定がない(初期値設定無し＝空白が初期値だと思っています)場合、  
全ての空白に初期値を設定しても問題ない気がするので、  
空白のフィールドはすべて、初期値を指定というのでも大丈夫かもしれないです。

私は知識が追いつかず、まだプログラムをどうやってかけば良いかわかりませんが、  
以下のような流れでしょうか。

①全てのフィールドから、空白のフィールドを探し、  
フィールドコードを配列に格納する。

②配列に格納したフィールドコードを1つずつ取り出し、  
初期値を指定する。(初期値の設定が無い場合、空白のまま)

恐縮ですが、お手を煩わせない範囲で、  
参考になるプログラムを教えていただけると嬉しいです。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2021 年 9 月 22 日午前 12:25 UTC](https://community.cybozu.dev/t/topic/5246/8 "2021-09-22T00:25:07Z")

</div>

NSさん

お世話なっております。

NSさんの仰る流れで良いかと思います。  
([以前のコメント](https://community.cybozu.dev/hc/ja/community/posts/4406034392345/comments/4406552070681)で私が申し上げたpropertiesでループというのは忘れて頂ければと思います。)  
「フィールドコードを配列に格納する-\>配列に格納したフィールドコードを1つずつ取り出し初期値を指定する」については、配列に格納しないで、そのまま初期値を代入をする方がシンプルかなと思いました。

細かく言うのであれば、下記のようになるかと思います。  
1 [全レコード](https://community.cybozu.dev/hc/ja/articles/202331474)と[フォームの設定](https://community.cybozu.dev/hc/ja/articles/204783170)を取得する  
2.1 全レコードについてループさせる  
2.2 2.1のループの中で各レコードのフィールドについてループさせる([Object.values()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/values)などを使うと良さそう)  
2.3 2.2のループの中でvalueの空白チェックを行い、空白であればフォームの設定を用いて初期値を代入する  
3 [レコードの更新](https://community.cybozu.dev/hc/ja/articles/201941784)をする

申し訳ございませんが、今回の実装に近いような記事などは見つけられませんでした。  
現状のコードや躓いている箇所を教えていただければ、なにかお力になれるかもしれません。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2199](https://avatars.discourse-cdn.com/v4/letter/l/a88e4f/32.png) [@Legacy\_Account2199](https://community.cybozu.dev/u/Legacy_Account2199)\
**Post date:** [2021 年 10 月 19 日午前 1:28 UTC](https://community.cybozu.dev/t/topic/5246/9 "2021-10-19T01:28:14Z")

</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:** [2025 年 8 月 21 日午前 12:42 UTC](https://community.cybozu.dev/t/topic/5246/10 "2025-08-21T00:42:11Z")

</div>

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