新規投稿
フォローする

テーブルデータの一括登録・一括更新

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

既存のデータにテーブル項目を設けることになりました。

新規作成時に自動で値をセットするプログラムはできたのですが、1件ずつ保存するのは面倒なので、ボタン押下により一括登録・更新したいです。

デバッグもしてみましたが、混乱してしまい、どこを直せばいいのか分かりません。。。

添付図のようなテーブルを作成したいです。

コードは切り貼りでおかしな部分ばかりだと思います。

お力添えいただけませんか。

 

(function() {
"use strict";
kintone.events.on("app.record.index.show", function(event) {
if (document.getElementById('my_4_button') !== null) {
return;
}
var myIndexButton = document.createElement('button');
myIndexButton.id = 'my_4_button';
myIndexButton.innerHTML = 'table';

//ボタンクリック後の処理
myIndexButton.onclick = function() {
var appId = kintone.app.getId();
var param = {
app: appId,
query: '',
fields: ['$id', 'テーブル', '年度', '値', '数字0', '数字1', '数字2', '数字3', '数字4'],
totalCount: true,
isGuest: false
};
kintoneUtility.rest.getAllRecordsByQuery(param).then(function(resp) {
/////////空更新オブジェクトの生成
var param = {
"app": appId,
"records": [],
isGuest: false
};
//レコード更新
resp.records.forEach(function(record) {
var newRow1 = {};
var newRow2 = {};
var newRow3 = {};
var newRow4 = {};
var newRow5 = {};
newRow1['年度'] = { value: 2019};
newRow1['値'] = { value: record['数字0'].value };
newRow2['年度'] = { value: 2020 };
newRow2['値'] = { value: record['数字1'].value };
newRow3['年度'] = { value: 2021 };
newRow3['値'] = { value: record['数字2'].value };
newRow4['年度'] = { value: 2022 };
newRow4['値'] = { value: record['数字3'].value };
newRow5['年度'] = { value: 2023 };
newRow5['値'] = { value: record['数字4'].value };

param.records.push({
"id": record.$id.value,
"record": {
'テーブル': {
value: [
{
value: {
'年度': {
value: newRow1.value.年度.value
},
'値': {
value: newRow1.value.値.value
}
}
}
]
}
}
});

});
kintoneUtility.rest.putAllRecords(param).then(function(resp) {
//success
console.log(resp);
}, function(error) {
//error
console.log(param);
console.log(error);
});
});
}
kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
return event;
});
})();
0

3件のコメント

Avatar
村濱一樹

すくなくとも、せっかく宣言しているnewRow変数が使われてませんのでまずそれを使ってみてはいかがでしょうか。

 

下記のような感じです。

param.records.push({
"id": record.$id.value,
"record": {
'テーブル': {
value: [
newRow1,
newRow2,
newRow3,
newRow4,
newRow5,
]
}
}
});

 

2
Avatar
村濱一樹
newRow1 = {
value: {
'年度': { value: 2019 },
'値': { value: record['数字0'].value }
}
}


追記です。たとえばnewRowは上記のようにしないといけないですね。

 

 

サブテーブルの行は以下のように表現する必要がありますので。初心者用の記事を参考にしてみてください。

https://developer.cybozu.io/hc/ja/articles/360027244231

 

{
value: {
フィールドコード: {
value: 値
}
}
}

2
Avatar
natsuki

村濱一樹 様

早速のご回答ありがとうございます。

ご指摘の通り直したところ、理想の動きになりました。

また、ご丁寧に参考記事まで教えていただき、大変助かりました。

テーブル項目を使用したことがなかったので、勉強になります。

村濱様のおかげで業務が進みました。本当にありがとうございました!

0
ログインしてコメントを残してください。