別アプリのテーブルに追記

いつもお世話になっております。

アプリAを登録すると、アプリAの品番がアプリBのテーブル(品番一覧)に追記される、という動きをしたいです。

コミュニティの投稿を参考に書いてみたところ、テーブルの行は追加されますがデータがブランクになってしまいます。どこを直せばいいのかご教示いただけないでしょうか。

お忙しいところ恐れ入りますがよろしくお願いいたします。

(function() {
'use strict';

var events = ['app.record.create.submit.success','app.record.edit.submit.success'];
kintone.events.on(events, function(event) {
var record = event.record;
var hinban = record.品番.value;
var keyno = record.キー番号.value;

var param = {
"app": 201,
"query": 'レコ番 = "' +keyno + '"',
};
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', param).then(function(resp) {
var record2 = resp.records;
var existing_subtable = record2[0]['品番一覧'].value;
var subtable = []; // 最終的にPUTするサブテーブル
var appended_subtable = []; // 追加したいサブテーブル
// 既存のサブテーブルを抽出
for (var i = 0; i < existing_subtable.length; i++) {
subtable.push(existing_subtable[i]);
}

var body = {
"app": 201,
"updateKey": {
field: "レコ番",
value: record.キー番号.value
},

"record":{
"品番一覧":{
"value":[
{
'value': {
'品番': {
'value': hinban
},
'備考': {
'value': ""
},
}
}
]
}
}
};
subtable = subtable.concat(body); // 既存と追加分のサブテーブルを結合
var put_record = {}; // レコード更新用オブジェクト
put_record["品番一覧"] = {
value: subtable
};

kintone.api(kintone.api.url('/k/v1/record.json', true),'PUT', {
"app": 201,
"updateKey": {
field: "レコ番",
value: record.キー番号.value
},
"record": put_record
});
});
});
})();

なつ 様

 

こんにちは、PUTするJSON作成するの難しいですよね。

おそらくこちらのコードでは、body の中を修正すれば行けるんじゃないかと思っています。

put_record に余分な内容が多いので正常にPUTされないことが原因でしょうか。

put_record["品番一覧"] = {
 value: subtable
};

上記で、subtable に concat する前の body が入っているので単純に考えると、[“品番一覧”].value 以降が body に入っていれば問題ないかと思います。

新屋 育男 様

お世話になります。

コメントしていただきありがとうございます。

bodyの中を修正してみましたが、やはりブランク行しか追加されませんでした。

教えていただいたのに理解力がなくすみません。

どう修正すればいいいのかご教示いただけないでしょうか。

var body = {
"品番一覧":{
"value":[
{
'value': {
'品番': {
'value': hinban
},
'備考': {
'value': ""
},
}
}
]
}
};
appended_subtable.push(body);
subtable = subtable.concat(appended_subtable); // 既存と追加分のサブテーブルを結合
var put_record = {}; // レコード更新用オブジェクト
put_record["品番一覧"] = {
value: subtable
};

 

なつ 様

お世話になります。

やはりわかりにくいですよね。

具体的には下記になります。([“品番一覧”].value 以降 のみ記述です。)

var body = {
value: {
  品番: {
    value: hinban,
  },
  備考: {
    value: '',
  },
},
}

こちらで一度試して頂けますと幸いでございます。

新屋 育男 様

ご回答ありがとうございます。勉強不足ですみません。

教えていただいたコードで希望通りの動作になりました。

新屋育男様のおかげです。大変助かりました。

お時間割いていただきありがとうございました。

今後ともよろしくお願いいたします。