作成者カテゴリ返答の対象
公開
ntaka
05/23/2001 05:23 PM
文書リンクアイコン ACL一覧
Re: ACL一覧(スクリプト?)

以下にACLを書き出すエージェントを書きます。
実行する文書を「@コマンド使用時に1回実行」指定したエージェントの実行時間「エージェントリストから手動で」実行するエージェントを作成してitializeのところに貼り付ければエージェントの一覧のところからメニューバーで「アクション」−>「実行」で現在のDBのACLが書き出されます。
詳細はスクリプトの内容をご覧ください。

Sub Initialize
'データベースの全ACLエントリーの名前、レベル、ロールを書き出す
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim entry2 As NotesACLEntry
Dim aryRoles As Variant

'サーバ、ファイルを指定してデータベースを開く
' server$ = Inputbox$( "Which server?", "ACL Entry Export" )
server$ = "TMITDEV01/TMITTEST"
' server$ = ""
dbfile$ = Inputbox$( "Which database?", "ACL Entry Export" )
dbfile$ = "TMIT\0502Hyotei\" & dbfile$
Set db = New NotesDatabase( server$, dbfile$ )

Set acl = db.ACL 'ACLを取得
Set entry = acl.GetFirstEntry '最初のACLエントリを取得

'出力先のファイル名を指定
filename$ = Inputbox$( "ファイル名を指定して下さい", "ACL Entry Export", "C:\temp\AclEntry.csv" )
fileNum% = Freefile
Open filename$ For Output As fileNum%

'ヘッダを出力
Write #fileNum%, Cstr(dbfile$)
Write #fileNum%, "Name", "Level", "Roles","文書作成","文書削除","Agent","Folder","P読者","P作成者"

'全ACLエントリに対して実行
While Not(entry Is Nothing)
Set entry2 = acl.GetNextEntry( entry ) 'フロー制御

'ユーザー名を省略形式で取得
Set userName = New NotesName( entry.Name )
strUserName$ = userName.Abbreviated

'レベルの定数を日本語で表現し直す
Select Case entry.Level
Case ACLLEVEL_NOACCESS : level$ = "なし"
Case ACLLEVEL_DEPOSITOR : level$ = "投稿者"
Case ACLLEVEL_READER : level$ = "読者"
Case ACLLEVEL_AUTHOR : level$ = "作成者"
Case ACLLEVEL_EDITOR : level$ = "編集者"
Case ACLLEVEL_DESIGNER : level$ = "設計者"
Case ACLLEVEL_MANAGER : level$ = "管理者"
End Select

'ロールを取得
roles$ = "" 'ロールをヌルに戻しておく
aryRoles = entry.Roles
If aryRoles( 0 ) = "" Then
roles$ = ""
Else
Forall r In entry.Roles
If roles$ = "" Then
roles$ = r '最初のロールを格納
Else
roles$ = roles$ & " : " & r '2個目以降のロールを追加
End If
End Forall
End If

'文書の作成を取得
CDflag$ = ""
If entry.CanCreateDocuments Then
CDflag$ = "○"
End If

'文書の削除を取得
DDflag$ = ""
If entry.CanDeleteDocuments Then
DDflag$ = "○"
End If

'個人エージェントの作成を取得
AMflag$ = ""
If entry.CanCreatePersonalAgent Then
AMflag$ = "○"
End If

'個人フォルダの作成を取得
FMflag$ = ""
If entry.CanCreatePersonalFolder Then
FMflag$ = "○"
End If

'パブリック文書[読者]を取得
PRflag$ = ""
If entry.IspublicReader Then
PRflag$ = "○"
End If

'パブリック文書[作成者]を取得
PWflag$ = ""
If entry.IsPublicWriter Then
PWflag$ = "○"
End If

'ファイルに書き出し
Write #fileNum%, strUserName$, level$, roles$, CDflag$, DDflag$, AMflag$, FMflag$, PRflag$, PWflag$

Set entry = entry2 'フロー制御
Wend

Close #fileNum%

End Sub


[Previous Main Document]
ACL一覧 (ju)
. . 式でないとだめなのですか? (ntaka)
. . Re: ACL一覧 (ntaka)
. . . . Re:ACL一覧(スクリプト?) (ju)
. . . . . . Re: ACL一覧(スクリプト?) (ntaka) * 現在地 *
. . . . . . . . 追加 (ntaka)
. . . . . . . . ノーツビューの検索回数カウントと検索内容記録 (chou)
. . . . . . . . ノーツビューの検索回数カウントと検索内容記録 (chou)
. . . . . . . . ノーツビューの検索回数カウントと検索内容記録 (chou)
. . . . . . . . ノーツビューの検索回数カウントと検索内容記録 (chou)
. . . . . . . . ノーツビューの検索回数カウントと検索内容記録 (chou)
[Next Main Document]