何を実現したいのかを書きましょう
レコード一覧画面でボタン押下時に、表示されているレコード全てを別アプリにコピーしたいです。ですがエラーが起きるとそこでエラー処理に行き終了してしまうので、処理を終わらせずに次のレコードから続けてコピーを行う方法は無いでしょうか?
もしあるのでしたら、コードまで教えていただけると大変助かります。
発生した問題やエラーメッセージを具体的に書きましょう
コピー先アプリのフィールドAは「値の重複を禁止する」設定になっているため、同じレコード内容だとエラーになりコンソールのメッセージには「値がほかのレコードと重複しています。」と表示され、コピー処理はそこで終了します。
このままですと、何度押下しても処理が止まってコピーできないレコードが出てきますので、キー重複のレコードがあったら次のレコードに移動して処理を続けるということはできないでしょうか?
実行したコードをコピー&ペーストしましょう
( function() {
'use strict';
// レコード一覧画面表示後イベント
kintone.events.on( 'app.record.index.show', (event) => {
const records = event.records;
// ヘッダースペース要素
const headerSpace = kintone.app.getHeaderMenuSpaceElement();
if (headerSpace) {
// 既存の子要素を全て削除
while (headerSpace.firstChild) {
headerSpace.removeChild(headerSpace.firstChild);
}
}
// ボタン要素
const button = document.createElement("input");
button.value = "一括登録";
button.type = "button";
// ボタン作成
headerSpace.appendChild(button);
// ボタンクリック処理
const click = function() {
const postRec = [];
// 取得したレコード分ループ
records.forEach( function(eachRec) {
postRec.push({
"フィールドA": {value: eachRec.フィールドA.value},
"フィールドB": {value: eachRec.フィールドB.value},
});
});
// 転記先のアプリID設定
const appId = 777;
const postParams = {
app: appId,
records: postRec
};
kintone.api(kintone.api.url('/k/v1/records.json', true), 'POST', postParams, (resp) => {
// 正常
console.log(resp);
}, (error) => {
// エラー
console.log(error);
});
};
// ボタンのクリック処理
button.onclick = click;
});
})();