# GetUserAttr スクリプトおよびチャート関数

GetUserAttr() 関数は、アプリケーションにアクセスするユーザーに関する次の情報を返します。

* メールアドレス

* 件名

* ユーザーが所属するグループ (ID プロバイダー (IdP) グループやカスタム グループなど)

* 優先言語

* タイム ゾーン

GetUserAttr() 関数をロード スクリプトまたはチャートの数式で直接使用します。いずれの場合も、関数を使用して変数内または変数なしで属性を保存できます。この関数を Qlik Sense Client-Managed で使用すると、空のデータ値のみが返されます。よって、後ほど Qlik Cloud にアプリケーションをアップロードする目的で、この関数を使用してエラーを発生させることなく Qlik Sense Client-Managed でスクリプトを開発できます。

構文:

GetUserAttr(name)

戻り値データ型： デュアル

引数

| 引数 | 説明 |
| --- | --- |
| name | 返す属性の名前。式に文字列値として入力します。入力する文字列値は大文字と小文字を区別します。 |

関数を使用して、ユーザー属性をアプリケーションにロードできます。関数は次の属性を返します。

GetUserAttr()GetUserAttr() 関数によって返されるユーザー属性

| 帰属 | 説明 | ロード スクリプト変数の例 | チャートの数式の例 (変数なし) | チャートの数式の結果の例 |
| --- | --- | --- | --- | --- |
| userEmail | 現在のユーザーのメール。 | `Let vUserEmail = GetUserAttr('userEmail')` | `=GetUserAttr('userEmail')` | `john.doe@company.com` |
| userSubject | 現在のユーザーのサブジェクト。 | `Let vUserSubject = GetUserAttr('userSubject')` | `=GetUserAttr('userSubject')` | `00uss7ra3dk9doJln0x7` |
| userGroups | 現在のユーザーが所属するグループ (IdP 、カスタム、またはその両方)。文字列内のグループのカンマ区切りリストを返します。既定では、`QlikCloudGroupMode` システム変数が Load スクリプト ステートメントで設定されていない限り、`GetUserAttr` は IdP グループを返します。<br><br>[QlikCloudGroupMode](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/QlikCloudGroupMode.htm)。 | `Let vUserGroups = GetUserAttr('userGroups')` | `=GetUserAttr('userGroups')` | `Sales,Product-Lead,OKTA-Github-RnD` |
| userLocale | ユーザーの [設定] で設定されている、ユーザーの優先言語。<br><br>[個人設定の管理](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Introduction/profile-settings.htm) | `Let vUserLocale = GetUserAttr('userLocale')` | `=GetUserAttr('userLocale')` | `en` |
| userZoneinfo | ユーザーの [プロファイル設定] で設定されている、ユーザーのタイム ゾーン。<br><br>[個人設定の管理](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Introduction/profile-settings.htm) | `Let vUserLanguage = GetUserAttr('userZoneinfo')` | `=GetUserAttr('userZoneinfo')` | `Europe/London` |

## GetUserAttr の使用目的

この関数は、アプリケーションの現在のユーザーのユーザー プロパティとグループを返します。これにより、ユーザーに表示されるコンテンツをカスタマイズするソリューションを構築できます。たとえば、グローバル販売アプリケーションでは、特定の製品グループを担当する営業担当者にのみ、製品固有のシートを表示できます。アプリケーションのロード スクリプト内のロード ステートメントまたはチャートの数式で、数式として直接、または変数として保存された数式で関数を使用します。

[Dynamic titles based on user language using the GetUserAttr function](https://play.vidyard.com/bozy96G13YU5YrBjnqNNDF)

## 例 - スクリプト内の変数としてユーザー属性を保存する

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### ロード スクリプト変数とチャートの数式

この例では、作成したアプリケーション コンテンツで使用できる一連のスクリプト変数を定義します。アプリケーションがリロードされるごとに、属性は評価されアプリケーションに追加されます。

次の手順を実行します。

1. 新しい Qlik Sense アプリケーションを作成します。

2. データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。 ロード スクリプトには次が含まれています:

   * サンプル トランザクション データを含む、`Transactions` と呼ばれる新しいテーブル。これは任意のデータで置き換えることができるプレースホルダーとして追加されています。

   * `QlikCloudGroupMode` システム変数を `2` に設定するスクリプト ステートメント。`userGroups` 属性は、ユーザーが所属する IdP グループとカスタム グループの両方を返します。

   * GetSysAttr() 関数が返すことができる、使用可能な属性の一連のスクリプト変数定義。

     ```
     Set QlikCloudGroupMode = 2;
     Transactions:
     Load * inline [
     id,date,amount
     1,1/1/2023,500.67
     2,1/2/2023,458.91
     3,1/3/2023,12.34
     4,1/4/2023,90.90
     5,1/5/2023,256.30
     6,1/6/2023,789.16
     7,1/7/2023,501.25
     8,1/8/2023,87.01
     9,1/9/2023,161.16
     10,1/10/2023,300.06
     ];
     Let vUserEmail = GetUserAttr('userEmail');
     Let vUserSubject = GetUserAttr('userSubject');
     Let vUserGroups = GetUserAttr('userGroups');
     Let vUserLocale = GetUserAttr('userLocale');
     Let vUserZoneinfo = GetUserAttr('userZoneinfo');
     ```

3. データをロードし、高度な編集モードで新しいシートを開きます。

4. テーブルを作成し、次の数式を軸として追加します。

   * `=vUserEmail`

   * `=vUserSubject`

   * `=vUserGroups` は、カンマ区切りのリストを文字列で返します

   * `=vUserLocale`

   * `=vUserZoneinfo`

ヒント メモ読みやすさを向上させるために、軸を作成するときに [ユーザーのメール] などの軸ラベルを追加できます。

テーブルの出力には、使用可能なユーザー属性が動的に表示されます。次の表は、`GetUserAttr` 関数を使用して返される結果の例を示しています。

結果テーブル

| =vUserEmail | =vUserSubject | =vUserGroups | =vUserLocale | =vUserZoneinfo |
| --- | --- | --- | --- | --- |
| john.doe@company.com | 00uss7ra3dk9doJln0x7 | Sales,Product-Lead,OKTA-Github-RnD | en | アメリカ/トロント |

## 例 - ユーザー属性を変数として保存し、チャートの数式内で使用する

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### 変数とチャートの数式

この例では、ロード スクリプトで変数を定義する代わりに、アプリケーションで変数を定義します。変数を一度定義すると、アプリケーション内のチャートの数式で使用できます。チャートの数式でこの関数を使用する主なメリットは、アプリケーションをリロードすることなく、属性が自動的に更新される点にあります。これにより、アプリケーション ライフサイクルの一環として、ユーザー間でのアプリケーションの移動がスムーズになります。

次の手順を実行します。

1. 新しい Qlik Sense アプリケーションを作成します。

2. 高度な編集モードで新しいシートを開きます。

3. 変数ダイアログを開きます。

4. [新規作成] を選択し、次を実行します。

   * [名前] に「vUserEmail」と入力します。

   * [定義] に「=GetUserAttr('userEmail')」と入力します。

   * [作成] を選択します。

   ユーザーのメール アドレスを表示するためのアプリケーション変数が作成されます。このステップを繰り返して、次のパラメーターを使用して残りの属性の変数を作成します。

   * ユーザー サブジェクト

     * 名前: vUserSubject

     * 定義: =GetUserAttr('userSubject')

   * ユーザー グループ

     * 名前: vUserGroups

     * 定義: =GetUserAttr('userGroups')

   * ユーザー ロケール

     * 名前: vUserLocale

     * 定義: =GetUserAttr('userLocale')

   * ユーザー ゾーン情報

     * 名前: vUserZoneinfo

     * 定義: =GetUserAttr('userZoneinfo')

5. テーブルを作成し、次の数式を軸として追加します。

   * `=vUserEmail`

   * `=vUserSubject`

   * `=vUserGroups` (文字列内のカンマ区切りのリストを返します)

   * `=vUserLocale`

   * `=vUserZoneinfo`

ヒント メモ読みやすさを向上させるために、軸を作成するときに [ユーザーのメール] などの軸ラベルを追加できます。

新しいテーブルの出力には、使用可能なユーザー属性が動的に表示されます。次の表は、 `GetUserAttr` 関数から返される結果の例を示しています。

結果テーブル

| =vUserEmail | =vUserSubject | =vUserGroups | =vUserLocale | =vUserZoneinfo |
| --- | --- | --- | --- | --- |
| john.doe@company.com | 00uss7ra3dk9doJln0x7 | Sales,Product-Lead,OKTA-Github-RnD | en | アメリカ/トロント |

情報メモ既定では、`GetUserAttr('userGroups')` 関数はユーザーの IdP グループを返します。スクリプト ステートメントで `QlikCloudGroupMode` システム変数を設定することで、返されるグループを選択できます。たとえば、`Set QlikCloudGroupMode = 2` は IdP グループとカスタム グループの両方を返します。詳細については、「[QlikCloudGroupMode](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/QlikCloudGroupMode.htm)」を参照してください。

## 例 - ロードスクリプトで GetUserAttr 関数を使用する

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### ロード スクリプト

関数はアプリケーション内で変数がなくても使用できます。この例では、各属性を個別の項目としたテーブルをロードする方法を示します。ここから、アプリケーションでビジュアライゼーションを作成し、これらの詳細を表示できます。

次の手順を実行します。

1. 新しい Qlik Sense アプリケーションを作成します。

2. データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。 ロード スクリプトには次が含まれています:

   * 各属性を項目として含む、`Attributes` という新しいテーブル。

   * カスタム グループの `QlikCloudGroupMode` システム変数を `1` に設定するスクリプト ステートメント。`userGroups` 属性は、ユーザーが属するカスタム グループのみを返します。

   ```
   Set QlikCloudGroupMode = 1;
   Attributes:
   Load RowNo() as Key,
   GetUserAttr('userEmail') as UserEmail,
   GetUserAttr('userSubject') as UserSubject,
   GetUserAttr('userLocale') as UserLocale,
   GetUserAttr('userZoneinfo') as UserZoneinfo,
   GetUserAttr('userGroups') as UserGroups autogenerate 1;
   ```

3. データをロードします。データ モデルにテーブルが作成され、個別の項目で各属性が表示されます。

   ビジュアライゼーションで、テーブルやテキスト、画像のオブジェクトなどの属性項目を使用できるようになりました。

## 例 - チャートの数式内で GetUserAttr 関数を使用する

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### チャートの数式

変数を使用せずにチャート式内に関数を直接入力することができます。アプリケーションをリロードすることなく、ユーザー属性が更新されます。これにより、アプリケーション ライフサイクルの一環として、ユーザー間でのアプリケーションの移動がスムーズになります。

次の手順を実行します。

1. 新しい Qlik Sense アプリケーションを作成します。

2. 高度な編集モードで新しいシートを開きます。

3. テキスト オブジェクトと画像オブジェクトをシートにドラッグします。

4. 空白のチャート内をクリックし、次のラベルを入力します。

   ユーザー メール:

5. プロパティ パネルで、 [メジャーを追加] を選択します。

6. 次の式を入力します。

   * =GetUserAttr('userEmail')

7. 新しい行に他の属性 のラベルとメジャーを追加します。各属性には次の数式を使用します。

   * ユーザー サブジェクトには =GetUserAttr('userSubject')

   * ユーザー グループには =GetUserAttr('userGroups)

   * ユーザー ロケールには =GetUserAttr('userLocale')

   * ユーザー ゾーン情報には =GetUserAttr('userZoneinfo')

情報メモ既定では、`GetUserAttr('userGroups')` 関数はユーザーの IdP グループを返します。スクリプト ステートメントで `QlikCloudGroupMode` システム変数を設定することで、返されるグループを選択できます。たとえば、`Set QlikCloudGroupMode = 2` は IdP グループとカスタム グループの両方を返します。詳細については、「[QlikCloudGroupMode](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/QlikCloudGroupMode.htm)」を参照してください。

## 例 - チャートの数式を使用して列を条件付きで非表示にする

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### チャートの数式

概要

この例では、ユーザーのメール アドレスのドメインに基づいて、テーブルの列を表示または非表示にします。

次の手順を実行します。

1. 新しい Qlik Sense アプリケーションを作成します。

2. データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。 ロード スクリプトには次が含まれています:

   * 「`Transactions`」というテーブルにロードされるデータセット。

   * データ テーブル内の次の項目:

     * `ID`

     * `Date`

     * `Amount`

     ロード スクリプト

     ```
     Transactions:
     Load * inline [
     ID, Date, Amount
     1, 1/1/2023, 500.67
     2, 1/2/2023, 458.91
     3, 1/3/2023, 12.34
     ];
     ```

3. データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

   * `ID`

   * `Date`

   * `Amount`

   計算軸として次の数式を追加します。

   * `=WildMatch(GetUserAttr('userEmail'),'*@qlik.com')>0`、ユーザーのメール ドメインが `@qlik.com` と一致するかどうかを確認します。

4. `Amount` 軸のプロパティ パネルで、 [条件に応じて列を表示] に次の数式を追加します。

   * `=WildMatch(GetUserAttr('userEmail'),'*@qlik.com')>0`、ユーザーのメールが `qlik.com` ドメインと一致する場合に Amount 列を表示します。

   この数式では、メール アドレスのドメインに `@qlik.com` が含まれるユーザーに対してのみ `Amount` 列が表示されます。他のドメイン名を持つユーザーの場合、この列は非表示になります。

Results table 1 - User with email address: `user@qlik.com`user@qlik.com

| ID | Date | Amount | WildMatch(GetUserAttr('userEmail'),'\*@qlik.com')&gt;0 |
| --- | --- | --- | --- |
| 1 | 1/1/2023 | 500.67 | -1 |
| 2 | 1/2/2023 | 458.91 | -1 |
| 3 | 1/3/2023 | 12.34 | -1 |

Results table 2 - User with email address: `user@gmail.com`user@gmail.com

| ID | Date | WildMatch(GetUserAttr('userEmail'),'\*@qlik.com')&gt;0 |
| --- | --- | --- |
| 1 | 1/1/2023 | 0 |
| 2 | 1/2/2023 | 0 |
| 3 | 1/3/2023 | 0 |

この例では、`GetUserAttr` 関数を使用して特定の列を条件付きで非表示または表示する方法を確認できます。アプリケーションを表示しているユーザーのメール アドレスにドメイン `@qlik.com` が含まれており、列 4 の軸の数式が `-1` を返すため、最初のテーブルに `Amount` 列が表示されています。ユーザーは `qlik.com` ドメインのメール アドレスを持っていないため、2 番目のテーブルの結果では `Amount` 列は非表示になっています。