例: Authors property

  1. 次のスクリプトは文書の各作成者の名前を表示します。例えば、Ivan Ash が文書を作成して Kate Gaston が更新したとき、スクリプトは「Ivan Ash」と「Kate Gaston」を表示します。
    Dim doc As NotesDocument
    '...set value of doc...
    Forall a In doc.Authors
      Messagebox( a )
    End Forall
  2. 次のスクリプトは文書が過去 7 日間に更新されたかどうかを調べます。更新されていないとき、スクリプトは督促メモを文書の作成者にメールで送信します。Send メソッドは文字列の配列を第 2 番目のパラメータとして受け取ります。このため、スクリプトは doc.Authors の値を直接 Send メソッドに与えます。
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim newDoc As NotesDocument
    Dim weekDateTime As NotesDateTime
    Dim modifiedDateTime As NotesDateTime
    Set db = session.CurrentDatabase
    '...set value of doc...
    Set weekDateTime = New NotesDateTime( "Today" )
    Set modifiedDateTime = New NotesDateTime( "" )
    Call weekDateTime.AdjustDay( -7 )  ' set to one week ago
    modifiedDateTime.LSLocalTime = doc.LastModified
    If weekDateTime.TimeDifference( modifiedDateTime ) > 0 Then
      Set newDoc = New NotesDocument( db )
      newDoc.Form = "Memo"
      newDoc.Subject = _
      "Reminder: please update your project plan"
      Call newDoc.Send( False, doc.Authors )
    End If
  3. データベースに [TeamLeaders] という新しいロールを追加して作成者のアクセスリストを作成して、[TeamLeaders] だけがプロジェクト計画の文書を作成できるようにしました。今までプロジェクト文書を作成、編集できたユーザー全員が引き続き作成、編集できるようにするには、次のようなスクリプトを作成し、既存のプロジェクト計画の文書の作成者全員に [TeamLeader] ロールを与えます。
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim acl As NotesACL
    Dim entry As NotesACLEntry
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim dateTime As New NotesDateTime( "12/01/94" )
    
    Set db = session.CurrentDatabase
    Set collection = db.FTSearch("Project Plan", 20)
    Set acl = db.ACL
    Set doc = collection.GetFirstDocument()
    While Not(doc Is Nothing)
      Call enablePeople( acl, "Team Leader", doc.Authors )
      Set doc = collection.GetNextDocument( doc )
    Wend
Sub enablePeople( acl As NotesACL, role As String, _
names As Variant )
  Dim entry As NotesACLEntry
  Forall n In names
    Set entry = acl.GetEntry( n )
    If ( entry.Level = ACLLEVEL_NOACCESS ) Then
      Set entry = New NotesACLEntry( acl, n, _
      ACLLEVEL_AUTHOR )
      Call acl.Save
    End If
    Call entry.EnableRole( role )
  End Forall
  Call acl.Save
End Sub