下記のURLの情報を参考にし、レコードの一括ステータス変更を実施するボタンを作成しました。
ただ、私の作成したjavascriptだと一括変更できるのはログインユーザーとレコードの「現在の作業者」が一致している時に限り、この問題を解消したいと考えております。
一先ず思いついた案として、レコードの「現在の作業者」を一括変更/削除することを考えたのですが、こちらもjavascript等で実現可能なものでしょうか。また、その他により良い対応策があればお教えいただきたいです。
知識浅く大変恐縮ではございますが、知恵をお貸しいただけますと幸いです。
※不要かもしれませんが、現在作成しているjavascriptも下記に添付いたします。
(() => {
'use strict';
kintone.events.on('app.record.index.show', (event) => {
const appId = kintone.app.getId();
if (event.viewId !== 5755226) { //要ID変更
return;
}
if ($('.header-contents').length !== 0) {
return;
}
const el = kintone.app.getHeaderSpaceElement();
const headerDiv = $('<div></div>', {
class: 'header-contents'
});
// make a button for approval.
const balusButton = $('<button></button>', {
class: 'approval-button'
})
.html('一括完了')
.click(() => {
if (event.records.length > 0) {
window.swal({
title: '本当に全て完了して大丈夫ですか?',
text: '表示されているレコードを全て完了します',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: '完了処理',
cancelButtonText: 'キャンセル',
closeOnConfirm: false},
() => {
const records = [];
for (let h = 0; h < event.records.length; h++) {
const obj = {};
obj["id"] = event.records[h].$id.value;
obj["action"] = "確定"; // プロセス管理で設定されたアクション名を指定
records.push(obj);
}
const requestObj = {
'app': appId,
'records': records
};
kintone.api(kintone.api.url('/k/v1/records/status', true), 'PUT', requestObj, () => {
window.swal({title: '完了処理を行いました',
text: 'お疲れ様でした。',
// eslint-disable-next-line max-nested-callbacks
type: 'success'}, () => {
location.reload();
});
});
});
} else {
window.swal({
title: '申請中のレコードがありません',
type: 'warning'});
}
});
headerDiv.append(balusButton);
headerDiv.append($('<br />'));
headerDiv.appendTo(el);
});
})();