はじめまして。
以下のような仕組みを作りたく、Javascriptで制御しようとしているのですが、うまくいきません。
(function() {
"use strict";
var myEvent = ["app.record.create.submit", "app.record.edit.submit", "app.record.index.edit.submit"];
kintone.events.on(myEvent, function(event) {
var record = event.record;
var selectedUsers = record['ユーザー選択']['value'];
var selectedUsersname0 = record['ユーザー選択']['value'][0]['name'];
var selectedUsersname1 = record['ユーザー選択']['value'][1]['name'];
if (selectedUsers.length > 2) {
event.error = "担当者は3名以上指定できません。";
} else if(selectedUsers.length > 1 && selectedUsersname0.indexOf('◯◯') == -1 && selectedUsersname1.indexOf('◯◯') == -1) {
event.error = "◯◯を除き、担当者は一人しか指定できません。";
}
return event;
});
})();
【やりたいこと】
・基本的にユーザー選択には1名しか選択できないようにしたい
・「◯◯」という人物を含む場合は、2名登録ができるようにしたい
・「◯◯」という人物を含んでも、3名以上は登録ができないようにしたい
上記のコードを実行すると、1名で登録した時に「selectedUsersname1」の値が取れなくてエラーが起きます。
ユーザー選択の数が1の場合、2の場合、・・・・・と分岐して書いてみたのですが、不明がエラーが出て一旦元に戻しました。
プログラム初心者のため、あまりいい方法が思い浮かばず、こちらに質問を投稿いたしました。
ご助力を賜れますと幸いです。
初めまして。
ユーザー選択をmapで配列に入れ直して、そこに●●(許可されたユーザー)が含まれているかどうかを判定したらいかがでしょうか。
const selectedUsers = event.record['ユーザー選択'].value.map((user) => {
return user.name;
});
上記をもとに以下の条件でエラーを出します。
許可されたユーザーはallowedUserという変数で宣言しておきます。
・3名(length > 2)の場合
・許可されたユーザーが含まれず、2名(length > 1)の場合
const allowedUser = '●●';
if (selectedUsers.length > 2) {
event.error ='担当者は3名以上指定できません。';
} else if (!selectedUsers.includes(allowedUser) && selectedUsers.length>1) {
event.error =`${allowedUser}を除き、担当者は一人しか指定できません。`;
}
ウレット様
早速のご回答、誠にありがとうございます。
ご教示いただいた内容で、以下のようにプログラムを修正し、希望通りの動作をすることが確認できました。
(function() {
"use strict";
var myEvent = ["app.record.create.submit", "app.record.edit.submit", "app.record.index.edit.submit"];
kintone.events.on(myEvent, function(event) {
var record = event.record;
const selectedUsers = event.record['ユーザー選択'].value.map((user) => {
return user.name;
});
const allowedUser = '◯◯';
if (selectedUsers.length > 2) {
event.error ='担当者は3名以上指定できません。';
} else if (!selectedUsers.includes(allowedUser) && selectedUsers.length>1) {
event.error =`${allowedUser}を除き、担当者は一人しか指定できません。`;
}
return event;
});
})();
非常に助かりました。
ありがとうございます。
system
(system)
Closed
4
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。