LoginSignup
3
1

More than 5 years have passed since last update.

Pleasanterの拡張SQLと拡張スクリプトでユーザーIDと名前を取得

Last updated at Posted at 2018-05-11

レコード作成者のユーザーIDや名前を取得したい

Pleasanterの特長として、複数ユーザーで同時にデータの更新ができます。
複数ユーザーで同じサイトを使用していると「ユーザーによって動作を変えたい」「ユーザーの上司だけに閲覧権限を付与したい」といった要件が出てきました。

そのためには、ユーザーを特定する必要があるので、そのユーザーIDや名前ってどうやって取得すれば良いか調べてみました。

拡張SQL

拡張SQLで取得する時は、以下のように記述したファイルを、WEBサーバールート\pleasanter\App_Data\Parameters\ExtendedSqls以下に拡張子をjsonにして配置したあと、IISを再起動すれば取得できました。
ただ、このままだと取得できるだけなので、実際に利用する時はupdateやinsertで、どこかのテーブルに反映する必要がありました。

Sample.json
{
    "Description": "Sample",
    "SiteIdList": [2],
    "IdList": null,
    "OnCreating": false,
    "OnCreated": true,
    "OnUpdating": false,
    "OnUpdated": false,
    "OnDeleting": false,
    "OnDeleted": false,
    "OnBulkDeleting": false,
    "OnBulkDeleted": false,
    "OnImporting": false,
    "OnImported": false,
    "CommandText": "select creator from items where ReferenceId = {{Id}}"
}

拡張スクリプト

前提条件

拡張スクリプトを使用して、ユーザー名を取得したものを任意の項目に反映させるには、私が構築した環境では、以下のパッチがあたっていなかったので、事前に当てておく必要がありました。
https://github.com/Implem/Implem.Pleasanter/commit/6a0472233fac596fca9322a7e0f59930205d5c1d

どうやって取得するか…

バージョンアップによって、以下のコードで取得できるようになりました。

getUserId.js
var UserId = $("#UserId").val();

以前は、以下のような方法で取得していました。
ユーザー名を取得したい時にはいまでも有効なので、参考の為に残しておきます。

新規作成ページを開き、HTMLソースを眺めていたら、新規作成時に作成者の名前とIDが担当者欄に設定されていたので、これを取得しました。

getUsername.js
var txt = $('[name=Results_Owner] option:selected').text();
var Id = $('#Results_Owner').val(); // ユーザーID

$p.set($('#Results_DescriptionA'), txt); // ユーザー名を設定
$p.set($('#Results_NumA'), Id); // ユーザーIDを設定

ユーザー情報取得.png

拡張スクリプトを新規作成時のみに実行させるため「出力先」の「全て」の、チェックボックスのチェックを外し、「新規作成」のみにチェックを入れるようにしました。

以上で、説明Aにユーザー名、数値AにIDが入力されました。

まとめ

分かってしまえば、どうということはないのですが、拡張SQLも拡張スクリプトも作成者のユーザーIDや名前を格納している変数が用意されていないので、以上のようにして取得する必要がありました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1