計算式プラグイン:ステータスが変わった瞬間に日付をセット からディスカッションを続行:
先日の質問の件について、継続して相談させてください。
ステータスが「03_完了」になったタイミングで、その日の日付を「受理日」フィールドに1度だけ記録したいと考えています。
以下の計算式(循環参照を許可)を検討しています。
IF(AND(ステータス="03_完了", 受理日=""),
TODAY(),
受理日
)
しかし、この構成のまま運用すると、すべてのプロセス実行時にプラグインの計算処理が走ってしまい、対象フィールド(受理日)の編集権限を持たない「途中のプロセス実行者」が次のステータスへ進めようとした際に、権限エラーが発生してしまいます。
【質問】
ステータスが「03_完了」に変わった瞬間だけ日付をセットし、それ以外のステータス(編集権限を持たないユーザーの操作時)では計算処理をスキップさせて権限エラーを回避するには、どのような計算式の記述(制御ロジック)が最も適切でしょうか?
もし回避策があれば、ご教授いただけますと幸いです。
よろしくお願いいたします。
すべてのプロセス実行時にプラグインの計算処理が走ってしまい、対象フィールド(受理日)の編集権限を持たない「途中のプロセス実行者」が次のステータスへ進めようとした際に、権限エラーが発生してしまいます。
各項目の計算式は、すべてのイベント処理で実行されます。
計算式プラグイン設定の「各種設定」で処理するイベントを制限できますが、「プロセス管理アクション」のアクション別指定はありません。
項目の編集権限を持たない場合でも計算処理は行われますが、権限エラーになるのはその値が変更された場合です。
今回の場合、AND(ステータス="03_完了", 受理日="" の状態で TODAY() が実行される場合だと思われます。
もし回避策があれば、ご教授いただけますと幸いです。
下記の対策案が考えられます。
・既存レコードを変更
既存レコードで、ステータス=“03_完了” のレコードについては、受理日 を設定する。
計算処理を行っても、計算結果の値が変わらなければエラーになりません。
・受理日を「閲覧」不可に
編集権限を持たないユーザーを「閲覧」不可にすると、受理日の計算処理が行われません。
表示用として、標準の計算項目で受理日を設定することで日付表示が出来ます。
「いいね!」 1
項目の編集権限を持たない場合でも計算処理は行われますが、権限エラーになるのはその値が変更された場合です。
今回の場合、AND(ステータス=“03_完了”, 受理日=“” の状態で TODAY() が実行される場合だと思われます。
確認してみたのですが、その値が変更されない時でも権限エラーが発生してしまいます。
ちょっとわかりにくいかもしれませんが、テストアプリで再現してみました。
・小林花子(作成者)は「00_未申請」時にのみ編集権限を持ちます。
・「01_総務課確認中」から「02_管理部長確認中」にステータスが変わるとき、作業者(作成者)に編集権限を持たせないと、「権限がありません」となってしまいます。
計算式にステータスを組み込むと、全てのステータスで編集権限が必要になるということは無いでしょうか?

フィールドのアクセス権限ではなく、レコードのアクセス権限ですね。
計算式にステータスを組み込むと、全てのステータスで編集権限が必要になるということは無いでしょうか?
はい、計算式にステータスを組み込むとステータス変更時に計算処理とレコード更新処理が行われます。
レコードのアクセス権を取得するAPI が昨年リリースされましたが、
計算式プラグインでは、下記理由で対応していません。
・各イベント処理で API を呼ぶことになると、処理が遅くなる。
・ステータス変更後のイベントが kintone でサポートしていない。
ステータス変更時のイベント処理は、ステータス変更前のアクセス権限です。
ステータス変更後のイベントが kintone の仕様でサポートされていませんので、ステータス毎のアクセス権限に対応するのがなかなか困難です。
いまのところ、ステータスによるレコードアクセス権への対応策が思いつきません。
「いいね!」 1
フィールドのアクセス権限ではなく、レコードのアクセス権限ですね。
その通りです。失礼いたしました。
いまのところ、ステータスによるレコードアクセス権への対応策が思いつきません。
承知いたしました。
技術的な面はあまり分かりませんが、難しそうだということは理解できました。
今回はアクセス権を緩和(権限付与)して対応したいと思います。
ご検討いただきありがとうございました。
ちなみに、計算式プラグインをAPIトークン対応させるということは難しいでしょうか?
本件においてはそれが最善の解決方法かわかりませんが、本件以外にも、ユーザーに閲覧させたくないフィールドを用いて計算させたいことが良くあります。
編集画面でAPIトークンを利用できませんので、APIトークンを使うイベントと使わないイベントで計算結果に違いが生じることになります。
本件においてはそれが最善の解決方法かわかりませんが、本件以外にも、ユーザーに閲覧させたくないフィールドを用いて計算させたいことが良くあります。
kintone 標準の計算項目は、内部APIで計算をサーバー側で行うのでユーザーが参照できない項目を使って計算できると思います。
用途によって使い分けてはいかがでしょうか?
「いいね!」 1
編集画面でAPIトークンを利用できませんので、APIトークンを使うイベントと使わないイベントで計算結果に違いが生じることになります。
そのような制約があるのですね。
勉強不足で恐縮です。
承知いたしました。
kintone 標準の計算項目は、内部APIで計算をサーバー側で行うのでユーザーが参照できない項目を使って計算できると思います。
そうなのですね!こちらについても初耳でした。
それが可能であれば大体のことは解決できる気がします。
非常に有用な情報をご教示いただき、ありがとうございました。
今後ともよろしくお願いいたします。
「いいね!」 1
system
クローズされました:
8
このトピックは 7 日が経過したので自動的にクローズされました。新たに返信することはできません。