inobe
(inobe)
1
<やりたい事>
プロセス管理でアクションを未処理から処理中に移行する時に
承認者のフィールドが空白ならば、エラーメッセージを出す。
エラーメッセージは2カ所に出します。
<現状>
メッセージが表示されず、ステータスが更新されます。
return eventの位置が悪いのでしょうか?
すみませんが、ご教示願います。
また、プログラムの実行内容を見るにはどうすれば見れるのかも教えてください。
(() => {
“use strict”;
//イベント取得
let sinseiactionEvents = ['app.record.detail.process.proceed'];//プロセス管理でアクションを実行する前
//ステータスを変更する時に承認者が空白であればエラーを表示させる
kintone.event.on(sinseiactionEvents,(event) => {
const record = event.record;
const approvalValue = record['承認者'].value;
//ステータスの変更時の判断
if(event.status.value === '未処理' && event.nextStatus.value === '処理中'){
if(approvalValue === void 0 || approvalValue === null || approvalValue === ''){
record['承認者'].error = "承認者入力必要";
event.error = "フィールド空白あり!";
return event;
}
}
});
});
inobe
(inobe)
3
てんそ様
確かに、レコード詳細画面では不可能ですね。
レコード編集画面でエラー表示していたものを参考にしていました。
プログラムの方は
console.logを随所に入れて f12で開発者ツールを表示させたのですが
とくに、console.logのコメントが表示されもせず
プログラム自体も何もエラーメッセージが表示されずに
ステータスが更新されました。
このプログラムが動いている気配がしません・・・
(() => {
“use strict”;
//対象フィールドの定義
const approval = '承認者'; //ユーザーフィールド
//各種イベント取得
let sinseiactionEvents = ['app.record.detail.process.proceed'];//承認依頼アクション
//ステータスの変更時の判断
kintone.event.on(sinseiactionEvents,(event) => {
console.log("イベントが発生しました");
const record = event.record;
console.log("record:",record);
const approvalValue = record[approval].value;
console.log("approvalValue:",approvalValue);
if(event.status.value === '未処理' && event.nextStatus.value === '処理中' && !approvalValue){
event.error = "フィールド空白あり!";
return event;
}
});
});
inobe
(inobe)
5
てんそ様
度々すみません。
ステータスの取得を教えてもらったように別行で書いて
if分内はその時の変数を使いましたが
エラーメッセージは出ませんでした。
ちなみに、ステータス取得時
現在のステータスの時はrecordで次のステータスの時はeventなのは
どうしてでしょうか?
//プロセス管理でアクションを更新する時に承認者が空白の場合エラーメッセージを出す
(() => {
“use strict”;
//対象フィールドの定義
const approval = '承認者'; //ユーザーフィールド
//イベント取得
let sinseiactionEvents = ['app.record.detail.process.proceed'];
//ステータスの取得
const currentStatus = record.ステータス.value;
const nextStatus = event.nextStatus.value;
//ステータスの変更時の判断
kintone.event.on(sinseiactionEvents,(event) => {
console.log("イベントが発生しました");
const record = event.record;
console.log("record:",record);
const approvalValue = record[approval].value;
console.log("approvalValue:",approvalValue);
if(currentStatus === '未処理' && nextStatus === '処理中' && !approvalValue){
event.error = "フィールド空白あり!";
return event;
}
});
});
inobeさまのコードが動かないのは、即時関数の引数がないのが原因でもあると思います。
});
↓
})();
inobe
(inobe)
8
てんそ様
失礼しました。
ステータス取得時の質問の回答ありがとうございます。
チュートリアルなどをみて
オブジェクト・パラメータ・メソッド・プロパティ等
こういった言葉が何を指すのかメモを取りつつ
かみ砕いてのみ込もうとはしているのですが
いまだのみ込めておらず・・・。
コミュニティーで、いろんな方の質問や
回答プログラムも拝見しているのですが
初歩的なところなのでしょう
eventやrecordと言うワードも
いろんなプログラムで、当たり前のようにでてきており
使い分けが分からず悩んでおりました。
解説わかりやすかったです。ありがとうございます。
プログラムの方は
コピペで試してはみたのですが
全くエラーの反応が無く
次のステータスに進みます。(未処理→処理中)
kintoneアプリの設定が悪いのかと
確認してますが、承認者のフィールドコードも承認者にしてて
他にアプリ側で確認するところは無いと思ってるのですが・・・。
はじめはプラグインのJSEditを使っていましたが
やり方が悪いのかもしれないと思い、プラグインを無効にして
Visual Studio Codeで作ってアプロードするやり方にも変えてもみましたが
ダメでした。
//プロセス管理でアクションを更新する時に承認者が空白の場合エラーメッセージを出す
(() => {
“use strict”;
// イベントリスナーを設定
kintone.events.on(‘app.record.detail.process.proceed’, (event) => {
console.log(“イベントリスナーがトリガーされました。”);
const record = event.record;
console.log("record: ", record);
// 現在のステータスと次のステータスを取得
const currentStatus = record.ステータス.value;
const nextStatus = event.nextStatus.value;
console.log("currentStatus: ", currentStatus);
console.log("nextStatus: ", nextStatus);
// 承認者フィールドの値を取得
const approver = record.承認者.value;
console.log("approver: ", approver);
// 条件をチェック
if (currentStatus === "未処理" && nextStatus === "処理中" && !approver) {
// エラーメッセージを設定してステータス遷移をキャンセル
console.log("条件に一致しました。エラーメッセージを設定します。");
event.error = "フィールド空白あり!";
return event;
}
console.log("条件に一致しませんでした。処理を継続します。");
});
})();
inobe
(inobe)
9
橋本様
最後の()は意味があるのですね。
エラーも出ないので、いらないのかと思ってました。
プログラム初めが
(function(){
とかで始まっている時もありますよね?
そして途中でfunction(event){がでてきたりします。
今回は使ってません。
この冒頭でfunction()を使う用途(意味)は
何でしょうか?
すみません、教えてください。
inobe
(inobe)
11
てんそ様
度々すみません。
違いわかりました。
承認者のフィールドが
私は文字列1行ではなく
ユーザー選択フィールドになっています。
文字列1行に変更すると、エラーメッセージが出ました。
プログラム中の
//承認者フィールドの値を取得
と言うところを変更しなくてはいけないという事ですね。
const approver = record.承認者.value[0];に変更して
配列でデーターを取得するようにしたら
上手くいきました。
何度も細かく回答くださりありがとうございました。
system
(system)
クローズされました:
12
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。