kintone のプロセス管理を設定しているアプリで、作業者が自分ではないレコードのステータスを進めたい時……たとえば代理承認を行いたい、他のユーザーが担当している作業を代わりに行ったのでステータスも進めたいといった場合は、やること「作業者を変更する(現在のレコード)」や「作業者を変更する(指定のレコード)」を使って作業者を自分(ログインユーザー)に変更することで、ステータス変更が可能になります。


この記事では、一覧画面にチェックボックスを表示し、選択された複数レコードの作業者を一括でログインユーザーに変更し、ステータスを一度に変更するカスタマイズを紹介します。


その他の例として、詳細画面で開いているレコードに対して作業者を変更し、ステータス変更を行う手順については下記の記事で紹介していますので確認してみてください。

 

簡単に代理承認を実現する方法


カスタマイズ完成後のkintoneアプリのイメージ

一覧画面に「一括で処理中に変更」ボタンを配置し、チェックボックスでチェックしたレコードの作業者とステータスを変更します。

kintoneアプリの設定

プロセス管理の設定は下記です。

プロセスの設定で、「未処理」から「処理中」に進めるアクション「処理開始」はステータス「未処理」の作業者がレコードの作成者に指定されているため、

レコードの作成者のみが「処理開始」アクションを実行可能で、「未処理」から「処理中」へステータスを進めることができるようになっています。

今回はこの作業者をカスタマイズによって強制的にログインユーザーに変更し、「処理開始」アクションを実行します。

Customineのカスタマイズ


カスタマイズについて説明していきます。


まずは、一覧画面にチェックボックスとボタンを配置します。

やることは「ボタンをメニュー位置に配置する」、そして「一覧にチェックボックス列を追加する」を指定しました。

条件は「一覧画面を表示した時」です。


ここから、ボタンが押された時の処理を作成します。


まず前提として、kintoneの操作はログインユーザーの権限で行われるため、ログインユーザーが作業者ではないレコードのステータスを変更することはできません。

そのため、まずはステータスを変更したいレコードの作業者を自分(ログインユーザー)に変更します。


やること「一覧で選択されたレコードを取得する」で、一覧画面で選択されたレコードを取得します。

なお、このやることを「キーを指定してレコードを取得する」「条件を組み立ててレコードを取得する」などの別のレコードを取得する やること に変更すると、一覧画面に表示されたレコード以外の任意のレコードを更新対象として指定することもできます。


自分(ログインユーザー)を「ログインユーザーを取得する」で取得しておきます。


続いて、取得したレコードの作業者を変更します。


やることは「作業者を変更する(指定のレコード)」です。

レコードは、「一覧で選択されたレコードを取得する」のアクション「4」、作業者には「ログインユーザーを取得する」のアクション「6」の結果を指定します。


「kintone アプリの API トークン」には、kintone アプリで設定したAPIトークンを指定します。

下記はkintoneのAPIトークンの設定画面です。

APIトークンの権限には「レコード閲覧」と「アプリ管理」を設定しておいてください。作業者の変更に必要な権限です。


APIトークンを指定すると、作業者の変更を kintone のログインユーザーの権限ではなく、APIトークンの権限で行います。

このように設定することで、ログインユーザーがアプリ管理の権限を持っていなくても作業者の変更が可能になります。


これで作業者の変更はできました。

レコードの作業者が自分(ログインユーザー)になりましたので、次にステータスの変更を行います。


複数のレコードに対するステータスの変更は「ステータスを変更する(指定のレコード)」で行う事ができるのですが、ここで注意が必要です。

アクション4で取得したレコードに対して、作業者の変更に続いてステータスの変更を行うと、同じレコードに対して編集が競合したとみなされ、revisionエラーが発生します。


そのため、作業者を変更した後で改めて同じレコードを再取得し、再取得したレコードのステータスを変更する……のようなひと手間が必要になります。


再取得ですので、「一覧で選択されたレコードを取得する」で取得すれば良いように思いますが、実はこれはNGです。

一覧で選択されたレコードを取得する」は今画面に表示されているレコードを取得しますので、作業者が変更される前の古いレコードが取得されてしまいます。

そのため、「一覧で選択されたレコードを取得する」と同じレコードについて、更新後のレコードを kintone から再取得しなければなりません。




そこで使用するのが「条件を組み立ててレコードを取得する」です。

検索条件に、下記のように指定します。


${$4.レコード番号}


式の意味は、アクション4で取得したレコードの、レコード番号を全部まとめて取得する、という意味です。

検索条件としてセットされると、下記のように表示されます。


入力補助で「他のアクションの結果」で選択もできますが、この機能を使用すると「${$4[0].レコード番号}」とセットされますので、[0] は削除して「${$4.レコード番号}」となるよう手で修正してください。

アクション7で取得したレコードに対して「ステータスを変更する(指定のレコード)」を実行すれば、ステータスが変更されます。


ステータス変更の後は、作業者とステータスの変更が反映されたレコードを画面に表示するため、「画面をリロードする」で画面を更新します。


以上でカスタマイズは完成です。

「kintone アプリへ登録」して、動作を確認ください。

作業者とステータスの変更は無事できましたでしょうか?


ご質問がありましたら、チャットでお問い合わせください!