kintoneのフォーム設定で、ユーザを選択するフィールドを設けており、ユーザ選択時に、隣の文字列フィールドへ、選択したユーザの役職名を表示致したく考えております。
APIなどで自動表示する方法をご存知の方がおられましたら、アドバイス頂けると助かります。
kintoneのフォーム設定で、ユーザを選択するフィールドを設けており、ユーザ選択時に、隣の文字列フィールドへ、選択したユーザの役職名を表示致したく考えております。
APIなどで自動表示する方法をご存知の方がおられましたら、アドバイス頂けると助かります。
uto さん
こんにちは。ひよこです。
JS API と REST API を組み合わせれば出来ると思います。
ポイントは以下の2つです。
こんな流れでしょうか。
ユーザーを選択するフィールドに設定された code を取得する
var userCode = event.record.<ユーザーを選択するフィールドのフィールドコード>.value[0].code
2.で取得した code を使って ユーザーの所属組織エクスポート API(JSON) を使います。
この REST API は、kintone REST APIリクエストを送信するを使って実行できます。
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 します。
ひよこさん
アドバイス有難うございました。
下記の通りスクリプトを用意してみましたがエラーになってしまいます。
コードに誤りがあると思うのですがご指摘頂けると助かります。
(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;
});
});
})();
この度はアドバイス頂き、有難うございました。