CRUD Lab. Tech Blog

ギークス株式会社の沖縄開発拠点CRUDLab. (クラッドラボ)のIT技術(テック)ブログ。kintoneやAngularJSによる開発を行っています。

【kintone】ユーザー情報(個人、組織、グループ)別に、グループフィールドの開閉を操作しよう

0. 目次

1. 概要

ギークス株式会社CRUD Lab.のKUNISADAです!

ユーザー情報(個人、組織、グループ)でグループフィールドの開閉を操作しよう

kintoneのカスタマイズの際に便利なユーザー情報。 今回は、ユーザーの個人情報やユーザーが所属する組織/グループの情報別で「グループフィールド」を自動的に開閉させよう! というテーマです。

2. 準備

2-0 ユーザーの設定

設定

  • 登場ユーザーは2名「システム管理者」と「KUNISADA」
  • ユーザーは「1つの組織」で「複数のグループ」に所属 ※ ユーザーは「組織」「グループ」ともに複数所属することが可能。
  • 各ユーザーの所属組織/グループ設定は以下になります。
ユーザー名 組織コード 組織数 グループコード グループ数
システム管理者 SYSTEM 1件 Administrator,everyone 2件
KUNISADA TECH 1件 everyone_geechs,Administrator,everyone 3件

組織/グループコードの設定について

組織/グループのコードの設定: 設定 > cybozu.com共通管理 >ユーザー管理 > 組織/ユーザー >組織情報の編集/グループ情報の編集

2-1 フィールド

今回のjsカスタマイズには、「グループフィールド」のみを使用しているので、 その他の設定フィールドの説明は割愛しています。

フィールド名 フィールドコード 初期値 その他
グループ1 group_1 設定なし --
グループ2 group_2 設定なし --

f:id:crud_lab_editor:20160303152822p:plain

2-2 必要ファイルの読み込み

f:id:crud_lab_editor:20160303153525p:plain

3. イメージ図と対応コード

例1)ログインユーザー別に、グループフィールドの開閉を行う

状況説明

  • システム管理者のログインの場合:グループ2を開いた状態で表示
  • KUNISADAのログインの場合:グループ1を開いた状態で表示

f:id:crud_lab_editor:20160304170617g:plain

(function () {

    'use strict';

    //レコード詳細表示のイベントハンドラー
    kintone.events.on(['app.record.detail.show'], function(event){

        //ユーザーのログイン情報を取得
        var user = kintone.getLoginUser();

        /*--ログインユーザーの場合分け--*/
        if(user.code == "KUNISADAのユーザーコード")kintone.app.record.setGroupFieldOpen('group_1', true);
        if(user.code == "システム管理のユーザーコード")kintone.app.record.setGroupFieldOpen('group_2', true);

        return event;

    });

})();

例2)ログインユーザーの所属組織を表示する

状況説明

  • システム管理者でログイン
  • システム管理者の所属組織を表示

※グループフィールド開閉処理は割愛

f:id:crud_lab_editor:20160303163623g:plain

(function () {

    'use strict';

    //レコード詳細表示のイベントハンドラー
    kintone.events.on(['app.record.detail.show'], function(event){

        var user_organization,
            user = kintone.getLoginUser();

        /*--ユーザーの所属組織のコードを表示する--*/
        kintone.api('/v1/user/organizations','GET',{
            code:user.code
        },function(resp){
            user_organization = resp.organizationTitles[0].organization.code;         
            alert('あなたの所属組織コードは' + user_organization + 'です。');
        });

        return event;

    });

})();

例3)ログインユーザーの所属グループを表示する 

状況説明

  • KUNISADAでログイン
  • KUNISADAの所属グループを一覧で表示

※グループフィールド開閉処理は割愛

f:id:crud_lab_editor:20160304171409g:plain

(function () {

    'use strict';

    //レコード詳細表示のイベントハンドラー
    kintone.events.on(['app.record.detail.show'], function(event){

        var user_group,
            group_ary_count,
            user_group_ary = [],
            user = kintone.getLoginUser();

        /*--ユーザーの所属グループのコードを表示する ※複数件ある場合--*/ 
        kintone.api('/v1/user/groups','GET',{
            code:user.code
        },function(resp){
            //所属グループの数を数える
            group_ary_count = resp.groups.length;
            //所属グループの中に特定のグループがあるかの場合分け
            for(var i = 0; i < group_ary_count; i++){
                user_group = resp.groups[i].code;
                user_group_ary.push(user_group);
            }
            //所属グループの一覧を表示
            alert(user_group_ary.join('\n'));
        });  

        return event;

    });

})();

4. TIPS

  • ユーザーのログイン情報を取得する
kintone.getLoginUser()
  • グループフィールドの開閉する関数
kintone.app.record.setGroupFieldOpen(fieldCode, true/false)

5. まとめ

2月のkintoneアップデートでは、組織/グループフィールドの追加など、 組織/グループのカスタムがより簡単にできるようになりましたね! 今回は、既存ユーザー情報の設定を生かして、ログインユーザーの情報(個人/組織/グループ)を活用したグループフィールドの開閉処理にアプローチしてみました♪