アプリAの状況フィールドに、アプリBの状況フィールドと同じ値が入力されるようにしたい。
調べてみましたが、コミュニティにしばしばリンクが張られているhttps://community.cybozu.dev/hc/ja/articles/213209606
は既にアクセスできなくなっているため、詳細がわかりませんでした。
いろいろやってみましたが基礎知識が足りないせいか行き詰ってしまいました。
(() => {
'use strict';
const events = [
'app.record.detail.show',
'app.record.edit.show',
'app.record.index.show'
];
kintone.events.on(events, (event) => {
const clientRecordId = event.recordId;
const relatedAppId = kintone.app.getRelatedRecordsTargetAppId('アプリB');
const query = `番号_番号="${clientRecordId}"`;
const outputFields = ['状況'];
const appUrl = kintone.api.url('/k/v1/records');
const params = {
app: relatedAppId,
query: query,
fields: outputFields
};
// XMLHttpRequestオブジェクトを取得
const xhr = new XMLHttpRequest();
xhr.open('GET', appUrl);
// ヘッダーを追加
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
// レスポンスの受け取りが完了した時の処理
xhr.onload = function() {
if (xhr.status === 200) {
const resp = JSON.parse(xhr.responseText);
// レスポンスから状況フィールドの値を取得
const completeStatusValue = resp.records[0].状況.value;
// 状況フィールドに値を設定する
const recordData = {
'状況': {
'value': completeStatusValue // 状況の値を設定
}
};
// レコードの更新
const updateUrl = kintone.api.url('/k/v1/record');
const updateParams = {
'app': relatedAppId,
'id': clientRecordId, // 更新するレコードのID
'record': recordData // 更新するフィールドの値
};
kintone.api(updateUrl, 'PUT', updateParams, (updateResp) => {
// 更新が成功した場合の処理
console.log('レコードの更新が成功しました。', updateResp);
}, (updateError) => {
// 更新が失敗した場合の処理
console.error('レコードの更新に失敗しました。', updateError);
});
}
};
// リクエストの送信
xhr.send();
return event;
});
})();