APIを使ってアプリ間を自動転記(追加・更新)を行いたい
〇SMabcアプリ アプリID391
SB.ルックアップフィールド
SN.文字列フィールド
SNN.計算数値フィールド
KK.文字列フィールド
SM.文字列フィールド
〇MSabcアプリ アプリID392
TMSB.文字列フィールド
TMSN.文字列フィールド
TMSNN.数値
TMKK.文字列フィールド
TMSM.文字列フィールド
と2つアプリがあり
⑴SBabcアプリに新規レコードが追加されて保存したとき
⑵SBabcアプリのSNN.計算数値フィールド値以外のフィールド値が変更されて保存したとき
MSabcアプリのそれぞれのフィールドに
1⃣レコード新規追加
2⃣レコードの変更更新をしたい
それでそのコードを作成してみました
発生した問題やエラーメッセージを具体的に書きましょう
1⃣の追加動作は正常に動く
2⃣の更新動作が動かない
実行したコードのコピー&ペースト
(function () {
‘use strict’;
// MSabcマスタアプリにレコードを追加または更新する関数
function addOrUpdateRecordToWorkScheduleApp(event) {
var record = event.record; // 社員名管理アプリのレコードデータ
// デバッグ用: フィールドの値をコンソールに表示
console.log('SNN:', record['SNN'].value);
console.log('SN:', record['SN'].value);
console.log('SM:', record['SM'].value);
console.log('SB:', record['SB'].value);
console.log('KK:', record['KK'].value);
// MSabcアプリのアプリIDとAPIトークンを設定
var MSabcAppId = '392';
var apiToken = '';
// 必要なフィールドの存在を確認してからデータを作成
var assigneeData = {
app: MSabcAppId,
record: {}
};
if (record['SNN']) {
assigneeData.record['TMSNN'] = { value: record['SNN'].value };
}
if (record['SN']) {
assigneeData.record['TMSN'] = { value: record['SN'].value };
}
if (record['SM']) {
assigneeData.record['TMSM'] = { value: record['SM'].value };
}
if (record['SB'] && record['SB'].value) {
assigneeData.record['TMSB'] = { value: record['SB'].value };
}
if (record['KK']) {
assigneeData.record['TMKK'] = { value: record['KK'].value };
}
// 必要なフィールドがあれば同様に追加
// if (record['フィールドコード']) {
// assigneeData.record['フィールドコード'] = { value: record['フィールドコード'].value };
// }
// MSabcアプリを検索するためのクエリを作成
var query = 'TMSNN = "' + record['SNN'].value + '"';
// MSabcマスタアプリを検索して対応するレコードを取得
kintone.api(
kintone.api.url('/k/v1/records', true) + '?app=' + MSabcAppId + '&query=' + encodeURIComponent(query),
'GET',
{},
function(response) {
var assigneeRecords = response.records;
if (assigneeRecords.length === 1) {
// 該当するレコードが見つかった場合は、MSabcマスタアプリのレコードを更新
kintone.api(
kintone.api.url('/k/v1/record', true) + '?app=' + MSabcAppId + '&id=' + assigneeRecords[0]['$id'].value,
'PUT',
assigneeData,
function(response) {
console.log('MSabcマスタアプリのレコードを更新しました。');
console.log(response);
},
function(error) {
console.error('MSabcアプリのレコードの更新に失敗しました。');
console.error(error);
}
);
} else {
// 該当するレコードが見つからない場合は、新しいレコードとして追加
kintone.api(
kintone.api.url('/k/v1/record', true),
'POST',
assigneeData,
function(response) {
console.log('MSabcマスタアプリに新しいレコードを追加しました。');
console.log(response);
},
function(error) {
console.error('MSabcマスタアプリに新しいレコードの追加に失敗しました。');
console.error(error);
}
);
}
},
function(error) {
console.error('Msabcマスタアプリの検索に失敗しました。');
console.error(error);
}
);
}
// SMabcアプリの保存イベント(新規作成と更新時の両方)
kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function(event) {
// 関数を呼び出す
addOrUpdateRecordToWorkScheduleApp(event);
return event;
});
})();
エラー内容
/k/v1/record.json?app=392&id=1:1
Failed to load resource: the server responded with a status of 400 (Bad Request)
download.do?app=391&…f5eb48d0598051d7:72
MSabcアプリのレコードの更新に失敗しました。
download.do?app=391&…f5eb48d0598051d7:73
新規追加はできるが更新ができなくて困っています
まだ初心者なためこれ以上詳しいことがわからないのですが、どなたか更新されない理由や対策をご教示願いたいです