for文が書けず…ユーザー選択で複数選択した場合の取得方法

(function () {
"use strict";
kintone.events.on([
'app.record.create.change.ユーザー選択',
'app.record.edit.change.ユーザー選択'

], function(event){
if(event.record.ユーザー選択.value.length !== 1) return;
kintone.api(kintone.api.url('/v1/users', true), 'GET', {}).then(function(response){
event.record.メールアドレス.value = response.users.find(function(user){
return user.name === event.record.ユーザー選択.value[0].name;
}).email;

kintone.app.record.set(event);
});
});
})();

ユーザー選択からメールアドレスを取得するコードを使わせて頂いたのですが

複数選択する場合に最初の1名分しか取得できないため

質問させて頂きました。

for文を使えば書けるとのことで自分なりに書いてみたのですがうまく動作せず、

行き詰まってしまったためお助け頂けないでしょうか。

 

ユーザー選択が2名以上の場合はメールアドレスを「,」カンマで区切りたいです。

 

ianemarikaさん

こんにちは、私もプログラム勉強中です。

似たようなことを書いたことがあったので、投稿させて頂きました。

for文を書くならこんな感じかと思います。

(function () {

"use strict";

kintone.events.on([

'app.record.create.change.ユーザー選択',

'app.record.edit.change.ユーザー選択'

], function (event) {

//ユーザー選択してなかったら、リターン

if (event.record.ユーザー選択.value.length == 0) return;

//一人以上ユーザー選択してたら

var mail_adds = "";

var userarray = [];

//user情報を取得して

kintone.api(kintone.api.url('/v1/users', true), 'GET', {}).then(function (response) {

for (var i = 0; i < event.record.ユーザー選択.value.length; i++) {

//その中からユーザー選択した人たちのメールアドレスを取得

mail_adds = response.users.find(function (user) {

return user.name === event.record.ユーザー選択.value[i].name;

}).email;

//取得したメールアドレスをuserarrayに格納

userarray.push(mail_adds);

}

event.record.アドレス.value = userarray.join(",");

kintone.app.record.set(event);

});

});

})();

Aiko Yamamoto様

こんにちは。

こちらで完璧に動作しました。ありがとうございました!

細かく説明も入れてくださり、とてもわかりやすく理解できました。

しっかり自分のものにしてAiko様のように助けられるようになっていきます。

本当にお時間割いてくださりありがとうございました。

お役に立てたのなら嬉しいです。

一人でコード書いていてると悶々とする時ありますよね(笑)

お互いJavascriptが華麗にかけるようになれたら良いですね。