# 一覧で表示したレコードのキーを使用して一括で別のアプリに登録したい

**URL:** <https://community.cybozu.dev/t/topic/2107>\
**Category:** kintone 開発相談\
**Created:** [2015 年 8 月 25 日午前 8:07 UTC](https://community.cybozu.dev/t/topic/2107 "2015-08-25T08:07:14Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2972](https://avatars.discourse-cdn.com/v4/letter/l/a183cd/32.png) [@Legacy\_Account2972](https://community.cybozu.dev/u/Legacy_Account2972)\
**Post date:** [2015 年 8 月 25 日午前 8:07 UTC](https://community.cybozu.dev/t/topic/2107/1 "2015-08-25T08:07:14Z")

</div>

Kintoneを使い始めて1か月のJavascript初心者です。  
下記の動作をしたい場合のJavaScriptサンプルをご教授いただけますと幸いです。

また別の質問なのですが、  
一覧表示したレコードを元に別のアプリに一括登録したいのです  
「一括登録」というボタンを一覧の上に設置して一括で別のアプリに登録できますか？

月契約管理アプリから毎月一括で売上アプリにレコードを作成したいのです。  
月契約管理の顧客コード、契約NO、商品、数量、単価を使用  
また、税率を入力しなくてはいけないので、税率も一括で登録したいです。

月契約管理項目  
契約NO  
顧客コード  
商品  
数量  
単価  
支払方法

売上アプリ項目  
顧客コード  
契約NO  
売上区分 ※「月契約」で固定  
売上年月 ※登録年月を4ケタで入れる  
内訳 ※「オプション料金」を固定  
支払方法  
入金予定日 ※毎月27日  
商品  
数量  
単価

こんな感じなのですが、出来るものでしょうか？

よろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2115](https://avatars.discourse-cdn.com/v4/letter/l/e9bcb4/32.png) [@Legacy\_Account2115](https://community.cybozu.dev/u/Legacy_Account2115)\
**Post date:** [2015 年 8 月 31 日午前 5:54 UTC](https://community.cybozu.dev/t/topic/2107/2 "2015-08-31T05:54:01Z")

</div>

hatanoさん  
cstapの瀧ヶ平です。

回答が遅くなりましたがサンプルコードを書いてみました。参考にしていただければうれしいです。

```
(function () {
  "use strict";
  kintone.events.on('app.record.index.show', function(event){
    var records = event.records;
    // ヘッダースペース要素の取得
    var headerSpace = kintone.app.getHeaderMenuSpaceElement();
    // ボタン要素の作成
    var button = document.createElement("input");
    button.value = "一括登録";
    button.type = "button";

   // ボタンがクリックされた時の処理
    var submit = function(){
      // レコード一覧のイベントで取得したレコードそれぞれに対して登録の処理を行う
      records.foreach(function(data){
        // 今日の日付を取得し正規表現で成形
        var date = (new Date).toLocaleString().match(/\d+\/\d+\/\d+/)[0];
        // 年月日から四桁の年月("/"区切り)に変換
        var today = date.match(/\d{2}\/\d{1,2}/)[0];
        // 月が一桁の場合に0を追加
        if(/\/\d$/.test(today)){
          today = today.replace(/\d$/,function(str){
            return "0" + str;
          });
        }
         // "/"を削除
        today = today.replace(/\//g, "");
        // レコードの共通部分の定義
        var record = {
          "売上区分" : {"value": "月契約"},
          "売上年月" : {"value": today},
          "内約" : {"value": "オプション料金"},
          "入金予定日" : {"value" : date.replace(/\d+$/, "27").replace(/\//g, "-")}, // 年月日の日付を27日に変更し、"/"を"-"に変換
          "税率" : {"value" : "8"} // 税率はパーセントか実数値かで適宜変更してください
        };
        // レコードそれぞれに対して決定するフィールドを定義
        record["顧客コード"] = data["顧客コード"];
        record["契約NO"] = data["契約NO"];
        record["支払方法"] = data["支払方法"];
        record["商品"] = data["商品"];
        record["数量"] = data["数量"];
        record["単価"] = data["単価"];
        kintone.api(kintone.api.url("/k/v1/record", true), "POST", {"app" : 売上アプリのアプリID, "record" : record}, function(res){
          // 成功時の処理
          console.log("success");
        }
        ,function(err){
          // 失敗時の処理
          console.log("error");
        }
        );
      });
    };
    // ボタンをヘッダースペースに追加
    headerSpace.appendChild(button);
    // ボタンのクリックイベントに処理を登録
    button.onclick = submit;
  });
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2972](https://avatars.discourse-cdn.com/v4/letter/l/a183cd/32.png) [@Legacy\_Account2972](https://community.cybozu.dev/u/Legacy_Account2972)\
**Post date:** [2015 年 8 月 31 日午前 7:26 UTC](https://community.cybozu.dev/t/topic/2107/3 "2015-08-31T07:26:08Z")

</div>

瀧ヶ平さん  
ご回答ありがとうございます。

早速やってみました。  
「一括登録」のボタンは表示されるのですが、クリックしても何も起こらないのです。  
変更した箇所はアプリのIDのみです。  
なにかがうまくいってないのでしょうか？

それと、ルックアップ項目を一括で登録する際にコードは入ってるけど、取得をクリックしていないのでコピーしてくるフィールドが空のままになってしまう場合は何か自動で取得する方法はありますでしょうか

何度も申し訳ございませんが、ご教授の程よろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2115](https://avatars.discourse-cdn.com/v4/letter/l/e9bcb4/32.png) [@Legacy\_Account2115](https://community.cybozu.dev/u/Legacy_Account2115)\
**Post date:** [2015 年 8 月 31 日午前 8:16 UTC](https://community.cybozu.dev/t/topic/2107/4 "2015-08-31T08:16:47Z")

</div>

hatanoさん

すみません、コードに間違えがありました。

```
records.foreach(function(data){

```

の部分を

```
records.forEach(function(data){

```

と書き替えればコードは問題ないと思います。

ルックアップの自動取得に関しては[こちら](https://cybozudev.zendesk.com/hc/ja/articles/201941984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E8%BF%BD%E5%8A%A0%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88#step8)などを参考にJavaScriptを記述すればよいかと思います。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2972](https://avatars.discourse-cdn.com/v4/letter/l/a183cd/32.png) [@Legacy\_Account2972](https://community.cybozu.dev/u/Legacy_Account2972)\
**Post date:** [2015 年 9 月 1 日午前 9:18 UTC](https://community.cybozu.dev/t/topic/2107/5 "2015-09-01T09:18:48Z")

</div>

瀧ヶ平さん  
度々ご回答ありがとうございます。

こんな感じにしてみましたが、何も起こりません。  
どこが間違ってるのでしょう・・・  
お手数をお掛けして申し訳ございませんが、よろしくお願いいたします。

(function () {  
“use strict”;  
kintone.events.on(‘app.record.index.show’, function(event){  
var records = event.records;  
// ヘッダースペース要素の取得  
var headerSpace = kintone.app.getHeaderMenuSpaceElement();  
// ボタン要素の作成  
var button = document.createElement(“input”);  
button.value = “一括登録”;  
button.type = “button”;

// ボタンがクリックされた時の処理  
var submit = function(){  
// レコード一覧のイベントで取得したレコードそれぞれに対して登録の処理を行う  
records.forEach(function(data){  
// 今日の日付を取得し正規表現で成形  
var date = (new Date).toLocaleString().match(/\d+/\d+/\d+/)[0];  
// 年月日から四桁の年月("/"区切り)に変換  
var today = date.match(/\d{2}/\d{1,2}/)[0];  
// 月が一桁の場合に0を追加  
if(//\d$/.test(today)){  
today = today.replace(/\d$/,function(str){  
return “0” + str;  
});  
}  
// “/“を削除  
today = today.replace(///g, “”);  
// レコードの共通部分の定義  
var record = {  
“売上区分” : {“value”: “月契約”},  
“売上年月” : {“value”: today},  
“内訳” : {“value”: “オプション料金”},  
“入金予定日” : {“value” : date.replace(/\d+$/, “27”).replace(///g, “-”)}, // 年月日の日付を27日に変更し、”/“を”-“に変換  
“税率” : {“value” : “8”} // 税率はパーセントか実数値かで適宜変更してください  
};  
// レコードそれぞれに対して決定するフィールドを定義  
record[“顧客コード”] = data[“顧客コード”];  
record[“契約NO”] = data[“契約NO”];  
record[“支払方法”] = data[“支払方法”];  
record[“商品”] = data[“商品”];  
record[“数量”] = data[“数量”];  
record[“単価”] = data[“単価”];  
kintone.api(kintone.api.url(”/k/v1/record”, true), “POST”, {“app” : 86, “record” : record}, function(res){  
// 成功時の処理  
console.log(“success”);  
}  
,function(err){  
// 失敗時の処理  
console.log(“error”);  
}  
);  
});  
};  
// ボタンをヘッダースペースに追加  
headerSpace.appendChild(button);  
// ボタンのクリックイベントに処理を登録  
button.onclick = submit;  
});  
})();

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2115](https://avatars.discourse-cdn.com/v4/letter/l/e9bcb4/32.png) [@Legacy\_Account2115](https://community.cybozu.dev/u/Legacy_Account2115)\
**Post date:** [2015 年 9 月 3 日午前 5:08 UTC](https://community.cybozu.dev/t/topic/2107/6 "2015-09-03T05:08:36Z")

</div>

hatanoさん

回答が遅くなりすいません。

私のサンプルはそれぞれのフィールドは文字列(一行),数値,日付のいずれかのフィールドを想定して書いたものです。  
うまくいっていないとすればおそらくフィールドのタイプの不一致によるものだと思われるので、二つのアプリ内で対応するフィールドを一致させ、売上アプリ独自の項目でフィールドが上に上げたものでない場合は[こちら](https://cybozudev.zendesk.com/hc/ja/articles/202166330-)を参考にして、POSTするレコードのデータの形式を修正することで対応できるかと思います。
