現在、以下のような実装を行っていますが、やりたいことが実現できるか分からないため、質問させていただきます。
【実現したいこと】
1.アプリ①のフィールド①が指定の値に変更され、保存が成功する
↓
2.アプリ②にレコードが作成される
↓
3.アプリ②のレコード番号をアプリ①の指定フィールドに格納する ←今回やりたいと思っている部分
1,2では以下のコードで動作をしています。
kintone.events.on('app.record.edit.submit.success', function(event) {
// アプリ①のフィールド①が指定の値に変更されたとき
// アプリ②にレコードが作成される処理
}
3の部分に関しては、
「アプリ①・アプリ②であるフィールド(例えば電話番号)が一致すれば」アプリ②のレコード番号をアプリ①の指定フィールドに格納する
といった感じでコードを書く方法を考えていたのですが、調べても類似例がなくそもそもプログラミングで実現可能なのか、ルックアップ等kintoneの機能で出来るのかご教授いただけると幸いです。
以下のような形でしょうか。レコード登録(POST)は成功時に返り値から作成したレコードのレコード番号を取得できるので、そのレコード番号を使って保存したレコードに更新をかけることで可能かと思います。
(function() {
'use strict';
let targetAppId = 'アプリ②のアプリID';
let field1 = 'アプリ①のフィールド①';
let field1Value = 'アプリ①のフィールド①の指定の値';
let recordIdField = 'アプリ①の「アプリ②のレコード番号」を代入するフィールド';
kintone.events.on('app.record.edit.submit.success', (event) => {
let record = event.record, appId = event.appId, recordId = event.recordId;
if (record[field1].value != field1Value || record[recordIdField].value) return event;
let postRecord = {
app: targetAppId,
record: {}
};
return kintone.api(kintone.api.url('/k/v1/record', true), 'POST', postRecord).then((resp) => {
let putRecord = {
app: appId,
id: recordId,
record: {
[recordIdField]: {
value: resp.id
}
}
};
return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', putRecord);
}).then((resp) => {
return event;
}).catch((error) => {
alert(error.message);
return event;
});
});
})();
mls-hashimotoさま、ご回答ありがとうございます。
返信が遅くなってしまい大変申し訳ございません。
せっかく丁寧にお答えいただいたところ恐縮ですが、
当初とは違う方法でデータを取ってくることになりました。
今回の実装ではこちらのコードは利用できませんが、また今回のような実装の予定があれば
ぜひ参考にさせていただきたく思います。