レコードの一括ステータス変更について

下記の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);
    });
  })();

一括変更できる対象の部分は、レコード単体の話ですとプロセス設定時にはレコード取得した際にステータス、作業者は配列で格納されているので、下記のようにログインユーザーと作業者に該当者が存在するか比較してあげるのがいいですかね。この考えをベースに複数レコード取得してその作業者を確認して等で。

// ログインユーザーのcode取得
const userCode = kintone.getLoginUser().code
console.log(userCode)

//ステータスの作業者
const res = kintone.app.record.get()
const record = res.record
const workerCode = record.作業者.value[0].code
console.log(workerCode)

// 対象でなければreturn
if(userCode !== workerCode) return 

ご回答いただきありがとうございます。
ただ私の理解力が至らず、いただいた情報から解決のイメージはつかめず。。
(ログインユーザーと作業者を比較する方法という点では大変参考になりました。ありがとうございます。)

私の質問文が不明瞭で、情報も不足していたかと存じますので、改めて以下にまとめさせていただきます。

現状:
レコードの「現在の作業者」とログインユーザーが一致している時にしか一括処理できない。
大半のレコードの「現在の作業者」は処理実行担当の管理者(ログインユーザー)と一致していない。

実現したいこと:
レコードの「現在の作業者」とログインユーザーが一致していない際にも一括処理を行いたい。
あるいは複数のレコードの「現在の作業者」を一括で削除したい。(作業者が設定されていなければ一括処理が可能なことは確認済み)

上記に関しての参考情報はございますでしょうか。

なるほど、すみませんでした。

APIトークンに強い権限持たせてRESTAPIでいけたりするのかな?とも思いサンプル作成して試してみたんです、作業者が設定されているステータスに対しての変更は、
“message”:"作業者のみがステータスを変更できます。"ときちんとレスポンス返ってきますね。逆に厳格に制御されているということですねぇ。

確認遅くなりすみません。再度のご返信をありがとうございます。

サンプル作成の上お試しいただいたとのこと、ありがとうございます。
作業者とログインユーザーが異なる場合には、処理は不可能ということですね。。
作業者削除の方針で再度検討/調査をしてみたいと思います。

「いいね!」 1

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。