ユーザー選択で指定したユーザの役職を別な文字列項目などに表示したい。

kintoneのフォーム設定で、ユーザを選択するフィールドを設けており、ユーザ選択時に、隣の文字列フィールドへ、選択したユーザの役職名を表示致したく考えております。

APIなどで自動表示する方法をご存知の方がおられましたら、アドバイス頂けると助かります。

uto さん

こんにちは。ひよこです。

JS API と REST API を組み合わせれば出来ると思います。

ポイントは以下の2つです。

  • ユーザ選択時=フィールドの値が変更されたときに、イベントを発火するには、フィールド変更時イベントを使います。
  • ユーザーの役職を取得するには、User API のユーザーの所属組織エクスポート API(JSON) を使います。

 

こんな流れでしょうか。

  1. フィールド変更時イベント(追加 / 編集)ハンドラを使います。

  2. ユーザーを選択するフィールドに設定された code を取得する

    var userCode = event.record.<ユーザーを選択するフィールドのフィールドコード>.value[0].code

  3. 2.で取得した code を使って ユーザーの所属組織エクスポート API(JSON) を使います。
    この REST API は、kintone REST APIリクエストを送信するを使って実行できます。

    kintone.api(kintone.api.url(‘/v1/user/organizations’), ‘GET’, {code: userCode}).then(function(resp) {

    });

  4. レスポンスの中に、organizationTitle型 のオブジェクトが返ってきます。役職名は title.name に入っています。

    var position = resp.organizationTitles[0].title.name;

  5. レコードの値を取得するで取得した record に代入し、レコードに値をセットする でセットします。

    var record = kintone.app.record.get();
    record.record.<役職を入れるフィールドのフィールドコード>.value = position;
    kintone.app.record.set(record);

  6. return event します。

 

ひよこさん

アドバイス有難うございました。
下記の通りスクリプトを用意してみましたがエラーになってしまいます。
コードに誤りがあると思うのですがご指摘頂けると助かります。

(function() {
"use strict";

kintone.events.on(["app.record.create.change.<ユーザーを選択するフィールドのフィールドコード>","app.record.edit.change.<ユーザーを選択するフィールドのフィールドコード>"], function(event) {
var userCode = event.record.ユーザーを選択するフィールドのフィールドコード.value[0].code;
});

kintone.api(kintone.api.url('/v1/user/organizations'), 'GET', {code: userCode}).then(function(resp) {
var position = resp.organizationTitles[0].title.name;
var record = kintone.app.record.get();
record.record.<役職を入れるフィールドのフィールドコード>.value = position;
kintone.app.record.set(record);
return event;
});
})();

uto さん

一番気になるのは、kintone.events.on のイベントハンドラにすべての処理が記述されていないことです。
今回はフィールド変更時イベント内でやりたい処理なので、kintone.events.on のイベントハンドラ内にすべて記述する必要があります。

kintone.events.on(["app.record.create.change.<ユーザーを選択するフィールドのフィールドコード>","app.record.edit.change.<ユーザーを選択するフィールドのフィールドコード>"], function(event) {
// kintone.api~も含め、この部分にすべての処理を書く必要があります。
});

kintone のイベント処理って kintone 特有のものなので、チュートリアルの第1回から読んでみると使い方の参考になりますよ!

ひよこさん

アドバイス有難うございます。
お陰様で下記の通り修正し、選択したユーザの役職名をテキストボックスに表示できる様になりました。

(function() {
"use strict";

// ユーザー選択フィールドで選択したユーザの code を取得
kintone.events.on(["app.record.create.change.<ユーザーを選択するフィールドのフィールドコード>","app.record.edit.change.<ユーザーを選択するフィールドのフィールドコード>"], function(event) {
var userCode = event.record.<ユーザーを選択するフィールドのフィールドコード>.value[0].code;

// 上記で取得した code を使って ユーザーの所属組織エクスポート API(JSON) を使って取得
kintone.api(kintone.api.url('/v1/user/organizations'), 'GET', {code: userCode}).then(function(resp) {

// レスポンスの中に、organizationTitle型 のオブジェクトが返ってくる。役職名は title.name に入る。
var position = resp.organizationTitles[0].title.name;

// 取得した役職名を record に代入
var record = kintone.app.record.get();
record.record.<役職を入れるフィールドのフィールドコード>.value = position;
kintone.app.record.set(record);

return event;
});
});
})();

この度はアドバイス頂き、有難うございました。