デスクネッツのスケジュールのアクセス権をデータベースで直接変更する方法

デスクネッツ・エンタープライズ版をお使いの皆さんに、ユーザのスケジュールデータに対するアクセス権を、「管理者設定」の画面からではなく、データベースへ直接更新してしまう方法をお教えしたい。
このブログの読者に、ネオジャパン社のWeb形式のグループウェア「デスクネッツ」を使っている企業の社員はほとんどいないだろうが、検索エンジンに引っかかることを期待しての記事である。
当然のことながら、データベースを直接更新するのは非常に危険である。場合によってはデスクネッツ全体が、正常に動かなくなる危険性があるので、下記の手順は「あなた自身のリスクで(at your own risk)」実施して頂きたい。
デスクネッツのスケジュール管理機能では、各ユーザのスケジュールデータに対して、他の全ユーザが「参照」「追加」「変更」「削除」のどの権限を持つかを設定できる。
ここで注意したいのは、デスクネッツでは、Aさんのスケジュールデータに対して、Bさんは「参照」権限のみだが、Cさんは「参照」「追加」「変更」「削除」権限を持つ、といった設定はできないということだ。デスクネッツでは、Aさんのスケジュールに対して、Aさん以外の全ユーザは統一されたアクセス権しか持つことができない。
逆に言えば、スケジュールデータのアクセス権設定は、それだけ単純になる。
仮に、デスクネッツに500人のユーザが登録されているとして、Aさんのスケジュールデータに対して、Aさん以外の社員が、それぞれ異なるアクセス権限を持てるとすると、500×(500-1)÷2=124,750通りの組み合わせのアクセス権限設定が必要になる。
ところが、デスクネッツのスケジュールデータのアクセス権設定は、上述のように単純なので、ユーザが500人登録されていれば、500通りのアクセス権限設定があればよい。Aさんのスケジュールデータについて、全社員が一律のアクセス権限しかもてないからだ。
ここで一つ困ったことがある。デスクネッツに新規にユーザ登録すると、そのユーザのスケジュールデータに対して、初期状態では他の全社員は「参照」「追加」の権限しか持たないのだ。
「参照」「追加」の権限しか持たないということは、たとえば会議を開催するとき、BさんがAさんのスケジュールを登録した後、会議の日時が変更になっても、Bさんは自分がAさんに登録したスケジュールデータを「変更」することができない。
また、CさんがうっかりミスでAさんのスケジュールを登録してしまった場合も、Cさんはそのスケジュールデータを「削除」することができない。
初期状態を「参照」「追加」「変更」「削除」すべて許可する設定にしてくれればよさそうなのだが、これがデスクネッツの仕様なので仕方ない。
そういうわけで、社員をデスクネッツに新規登録したら、忘れずにメニューの「管理者設定」から、システム管理者用のスケジュール機能設定画面を開き、その社員を選択し、その社員のスケジュールデータに対するアクセス権を「参照」「追加」の許可から、「参照」「追加」「変更」「削除」の許可へ、手作業で変更する必要がある。
これを新入社員一人ずつやるのは非常に面倒なである。
そこで、もっと簡潔な方法がないかと、デスクネッツ・エンタープライズ版の背後にあるデータベースのテーブルを調査した結果、dbo.TMPR_ACCESS_ALLというテーブルが、スケジュールデータへのアクセス権を制御していることがわかった。
このテーブルは、SID_CORPORATE列(会社コード)、SID_MODULE列(モジュールID)、ID列(ユーザID)、accesskind列(アクセス権限の種類)の4列からなる。
会社コードは初期値では「1」になっているはずだ。モジュールIDは「スケジュール」機能に該当するのは「1」である。
ユーザIDはその名の通り、デスクネッツに登録されている社員に一意に付番されるユーザIDで、dbo.TM_USERというテーブルの「ID」列を参照すれば、各社員のユーザIDがわかる。
最後のaccesskindとは、「参照」を第1ビット、「追加」を第2ビット、「変更」を第3ビット、「削除」を第4ビットとする4桁の2進数を、10進数に変換した整数値を設定する。たとえば「参照」「追加」「変更」なら1+2+4=7、すべての権限を付与するなら1+2+4+8=15を設定すればよい。
データベースのテーブルを直接更新できるようなツールで、デスクネッツの背後にあるデータベースに直接接続し、まず、dbo.TM_USERテーブルの「ID」列を見て、新規登録したユーザのユーザIDを調べる。
それから、dbo.TMPR_ACCESS_ALLテーブルを開いて、画面上から手動で新規レコードを追加し、左側の列から順に、「1」「1」「(調べたユーザID)」「15」と入力する。これで、そのユーザIDを持つ社員のスケジュールデータは、他の全社員から「参照」「追加」「変更」「削除」すべてが可能になる。
この作業手順をVBScriptなどのバッチ処理で再現すれば、新規登録ユーザ全員のスケジュールデータについて、全自動で他の全社員から「参照」「追加」「変更」「削除」を許可する設定ができる。