お世話になります。
タイトルの通り、REST APIでテーブルの値を更新したいと考えております。
アプリA:担当者マスタ
アプリB:シフトマスタ
シフトマスタには、テーブルで1日から末日までのシフトを作成しており、
ルックアップで担当者マスタから担当者情報を入力しています。
担当者マスタを更新した際、シフトマスタの該当の担当者情報を更新したいと
考えております。
下記urlの「テーブルの1行の特定のフィールドのみを更新する」を手本に更新しようとしたところ
エラーが表示されてしまいました。
エラーの内容は「the server responded with a status of 400 (Bad Request)」で
エラーメッセージは「undefined」となっておりました。
自分なりに色々と調べてみたのですが、何が問題なのかが分からないため
ご教示いただけると幸いです。
以下、コードになります。
(function() {
“use strict”;
var events = [‘app.record.index.edit.submit’, ‘app.record.edit.submit’];
//シフトマスタの情報
var appId = 85; //アプリID
kintone.events.on(events, function(event) {
var record = event.record;
var body = [];
//担当者マスタの情報
var search_keyword = record.$id.value; //担当者マスタのレコード番号
//console.log(search_keyword);
var put_origin = record.当日担当者名.value;
fetchRecords(appId, search_keyword).then(function(records) {
//console.log(records);
for (var i = 0;i < records.length; i++) {
var record = records[i];
for (var j = 0; j < records[i].担当者テーブル.value.length; j++) {
var subTbl = records[i].担当者テーブル.value[j].value;
if (subTbl[‘id’].value == search_keyword) {
//console.log(record[“担当者テーブル”].value[j].id);
body.push({“id”: record.$id.value,
“record”: {
“Table”: {
“value”: [
{
“id”: record[“担当者テーブル”].value[j].id,
“value”: {
“担当者名”: {
“value”: put_origin
}
}
}
]
}
}
});
}
else if (subTbl[‘id’].value != search_keyword) {
console.log(record[“担当者テーブル”].value[j].id);
body.push({“id”: record.$id.value,
“record”: {
“Table”: {
“value”: [
{
“id”: record[“担当者テーブル”].value[j].id
}
]
}
}
});
}
}
}
console.log(body);
var param = {
app: appId,
records: body,
isGuest: false
};
kintoneUtility.rest.putRecords(param).then(function(resp) {
// 成功時の処理を記載する
console.log(JSON.stringify(resp, null, ’ '));
alert(‘更新が成功しました。’);
}).catch(function(error) {
// エラー時の処理を記載する
console.log(error.message);
alert(‘更新が失敗しました。’);
});
});
/********************************************************************************
■全レコード取得関数
********************************************************************************/
function fetchRecords(appId, search_keyword, opt_offset, opt_limit, opt_records) {
var offset = opt_offset || 0;
var limit = opt_limit || 500;
var allRecords = opt_records || [];
var my_query = ‘(query like "’ + search_keyword + ‘")’;
//console.log(my_query);
var params = {app: appId, query: my_query + ’ order by レコード番号 asc limit ’ + limit + ’ offset ’ + offset};
return kintone.api(‘/k/v1/records’, ‘GET’, params).then(function(resp) {
allRecords = allRecords.concat(resp.records);
if (resp.records.length === limit) {
return fetchRecords(appId, search_keyword, offset + limit, limit, allRecords);
}
return allRecords;
});
}
});
})();
よろしくお願い致します。