Autor Thema: Kalender Profile automatisch füllen  (Gelesen 6995 mal)

Offline Pascal

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 538
  • Geschlecht: Männlich
Kalender Profile automatisch füllen
« am: 15.07.02 - 14:32:14 »
Hallo Leute

es gibt bei uns User die haben sich zum Hobby gemacht ihre Kalender Profile mit ihrer privaten E-Mai Adresse zu füllen was Probleme verursacht.
Kennt jemand einen Agenten oder ein Tool das den Inhaber der Mail-DB aus den DD ausliest und in das Kalender Profile reinschreibt, ich könnte diesen dann täglich in der Nacht laufen lassen ;-).

Vielen Dankg und Gruss
Pascal
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Kalender Profile automatisch füllen
« Antwort #1 am: 15.07.02 - 14:39:41 »
Hab hier was in meiner Trickkiste gefunden; zumindest ein Ansatz

eknori

Automatically update users' Location Document settings

                  By User, Dennis Fry
                  15 Oct 2001,

                  After you move a user from one server to another or if you change the users mail file name (after a user rename, or database corruption), the
                  user's personal address book never gets updated. Sometimes you forget to send a user a button, or call the user, to have their personal address
 book updated.

 Now you can update the user's personal address book information (Server, Mail File and Domain) automatically. Everytime a user opens a mail file, the script below
 executes and will only update the users personal address book information if all of the following conditions are met (in order):

 1. The opened database is located on a server (not local)
 2. Notes.ini file variable "$UpdateLocationDocument" does not exist or equals a value other than 0.
 3. 30 days or more has lapsed since the last successful location document change
 4. The opened database file name "mailxxx.nsf" matches the Mail File specified in the current user's Person Document in the address book.

 Since Notes Administrators switch to users ID files from time to time, you do want their own location document to be modifed. To avoid this from happening, add the
 following line to your notes.ini file:

 $UpdateLocationDocument=0

 To force a user's location document to be updated next time they open their mail file, just delete both of these lines from the users notes.ini file:

 $UpdateLocationDocument=
 $DateLocationModified=

 Just Copy the script code below into each of the mail templates used in your system (like StdR46Mail
 - mail46.ntf, etc) Database Script section, then wait for designer to run, or type "load design" at the servers console (not recommended to do this if people are accessing
 their mail files).

 ###########

 Each time a user opens their mail file, the following will be performed:

 1. The Script will exit if the database is opened locally (not on server)

 2. The Script checks the variable setting "$UpdateLocationDocument" in the notes.ini file.
 The script will exit if this setting is 0 ie. $UpdateLocationDocument=0
 This is so you can manually bypass this script via the notes.ini file (eg. for Notes Administrators)

 3. The Script gets the variable setting "$DateLocationModified" in the notes.ini file.
 This variable is a Date-Time setting, and will determine when script will process the function to update the personal address book.

 4. The script gets current location document in the personal address book.

 5. The script gets the users person document from the public address book.

 6. The script exists if the mail file name in the users person document is different to the current database that was opened (where this script was executed from). So, if
 you have access to other mail files, the script will not update the location document with incorrect settings.

 7. At this stage, the current user is the actual "owner" of the opened database, and the location document is then updated and saved. Information updated is MailFile,
 MailServer and Domain. You can optionally check or set other settings, such as "Mail File Location" (On Server), Internet browser and Proxy settings. You could also
 add a small script to ensure the "Calendar profile" document is always set to the correct user.

 8. The notes.ini variable "$DateLocationModified" is then set to the current date time, so the script will not execute again until the number of days lapsed since the last
 modification.

 If you need any scripts to do the above, drop me a line.

 ###########

 Any queries, contact me: noteshelp@bigpond.com



 Code

 Copy and paste the following code into the Database Script section of the mail templates:

 ########### CODE - DATABASE SCRIPT - POST OPEN EVENT

 (Declarations)
 Dim session As NotesSession
 Dim dbCurrent As NotesDatabase
 Dim sDateTime As String

 'The script to update the location document will only run once every 30 days
 Const LapsedDaysForLocationUpdate = 30

 Sub Postopen(Source As Notesuidatabase)
     
      Set session = New NotesSession
      Set dbCurrent = session.CurrentDatabase
     
 'Only execute if the database is located on the server (not a local database)
      If Not dbCurrent.Server = "" Then
           
 'Only update the users location document every 30 days
           If UpdateLocationDocument() Then
               
 'Update the users location document
                Call UpdateUsersLocationDocument()
           End If
      End If
     
 End Sub

 Function UpdateLocationDocument() As Variant
     
 'Last date the location document was modified
      Dim DateLocationModified As NotesDateTime
 'Current Date Time now
      Dim DateTimeNow As NotesDateTime
     
      UpdateLocationDocument = False
      If (session.GetEnvironmentValue("UpdateLocationDocument",False)) = 0 Then Goto ExitUpdateLocationDoc
     
 'Get the notes.ini file setting DateLocationModified
      Set DateLocationModified = New NotesDateTime(session.GetEnvironmentString("DateLocationModified",False))
 'Increase the number of days in the date with the minimum number of days we want to update the users location document
      Call DateLocationModified.AdjustDay(LapsedDaysForLocationUpdate)
     
 'get the current date time now
      Set DateTimeNow = New NotesDateTime(Now)
     
 'if the current date time has pasted the last time the location document was modified (plus 30 days) then
 'set the return value to TRUE and store the current date time in a temporary variable (will be updated in the notes.ini later)
      If DateTimeNow.LSLocalTime > DateLocationModified.LSLocalTime Then
           UpdateLocationDocument = True
           Set DateTimeNow = New NotesDateTime(Now)
           sDateTime = DateTimeNow.LsLocalTime
      End If
     
 ExitUpdateLocationDoc:
     
 End Function

 Function UpdateUsersLocationDocument()
     
      Dim viewLocations As NotesView
      Dim viewPeople As NotesView
      Dim docLocation As NotesDocument
      Dim docPerson As NotesDocument
      Dim dbNAB As NotesDatabase
      Dim dbPAB As NotesDatabase
      Dim LocationDocument As String
      Dim nnUserName As NotesName
      Dim PersonalAddressBook As String
      Dim MailFile As String
      Dim MailFilePerson As String
     
 'Get the personal address book from the notes.ini and remove any cascaded local address books
      PersonalAddressBook = Trim(session.GetEnvironmentString("Names",True))
      If Instr(PersonalAddressBook, ",") > 0 Then
           PersonalAddressBook = Left$(PersonalAddressBook, Instr(PersonalAddressBook, ",") -1)
      Else
           If Instr(PersonalAddressBook, ";") > 0 Then
                PersonalAddressBook = Left$(PersonalAddressBook, Instr(PersonalAddressBook, ";") -1)
           End If
      End If
     
 'Get the personal address book, exit if cannot be opened
      Set dbPAB = session.GetDatabase("", PersonalAddressBook)
      If dbPAB.IsOpen = False Then Goto FinishFunction
     
 'Get the current location document in use, exit if any errors
      Set viewLocations = dbPAB.GetView("Locations")
      If viewLocations Is Nothing Then Goto FinishFunction
      LocationDocument = Trim(session.GetEnvironmentString("Location",True))
      If LocationDocument = "" Then Goto FinishFunction
      LocationDocument = Left$(LocationDocument, Instr(LocationDocument, ",") -1)
      If LocationDocument = "" Then Goto FinishFunction
      Set docLocation = viewLocations.GetDocumentByKey(LocationDocument)
      If docLocation Is Nothing Then Goto FinishFunction
     
 'Get the Public Address Book from the current server
      Set dbNAB = session.GetDatabase(dbCurrent.Server, "names.nsf")
      If dbNAB.IsOpen = False Then Goto FinishFunction
     
 'Get the current users person document. Exit if user not in address book
      Set viewPeople = dbNAB.GetView("($VIMPeople)")
      Set nnUserName = New NotesName(session.UserName)
      Set docPerson = viewPeople.GetDocumentByKey(nnUserName.Abbreviated)
      If docPerson Is Nothing Then Goto FinishFunction
     
 'Get the name of the mail file from the person document and current database
      MailFile = dbCurrent.FilePath
      MailFilePerson = docPerson.MailFile(0)
      If Lcase(Right$(MailFilePerson, 4)) <> ".nsf" Then
           MailFilePerson = MailFilePerson & ".nsf"
      End If
     
 'Update the Location Document, if the mail file name in the address book matches the name of the current database
      If Lcase(MailFile) <> Lcase(MailFilePerson) Then Goto FinishFunction
      docLocation.MailFile = MailFile
      docLocation.MailServer = docPerson.MailServer(0)
      docLocation.Domain = docPerson.MailDomain(0)
      Call docLocation.Save(True, False)
     
      Call session.SetEnvironmentVar("DateLocationModified", sDateTime, False)
     
 FinishFunction:
     
 End Function
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline volki

  • Frischling
  • *
  • Beiträge: 2
  • Ich liebe dieses Forum!
Re:Kalender Profile automatisch füllen
« Antwort #2 am: 16.12.03 - 13:00:52 »
Hallo Eknori

Vielen Dank für die Antwort.
Die User sollten aber gerade dann eine Möglichkeit haben die Servernamen im Locationprofile zu änder, wenn sie keine Verbindung zum Server haben, 8 hätten sie ja nach der Namensänderung auch nicht. Deshalb wäre ein Agent sinnvoll der bei Bedarf das Profile auf den neuen Servernamen ändert.
und zwar für die Office und  Island Location

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Kalender Profile automatisch füllen
« Antwort #3 am: 17.12.03 - 09:37:56 »
Zitat
zwar für die Office und  Island Location

Aha, local -> neuer Server -> lokaler oder wie ??

Wenn du das für das Office offline machen willst, musst du aber erst einmal die Information auf den rechner des MA bekommen, bevor er offline geht. Egal, woran du das festmachst

A-K Server 1
L-Z Server 2

Nur mal so laut gedacht: Wenn der User vorher auf Server1 war und jetzt auf Server2, dann sollte er den "Ich-kann-die-datenbank-auf-dem-ServerSoundSo-nicht-finden-dialog". Hier wählt er dann den richtigen Server aus ( das kann man den Loosern in einer Mail mitteilen ) Unter der Voraussetzung, das du das Script in die Maildatenbank eingebaut hast, wird dann beim Öffnen derselben das LocationDoc geändert.

Ulrich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Jag_rip

  • Junior Mitglied
  • **
  • Beiträge: 89
  • Geschlecht: Männlich
  • veni, quaero, consulo...
Re: Kalender Profile automatisch füllen
« Antwort #4 am: 07.08.08 - 12:04:12 »
Hallo Ulrich

lang ists her, ich habs heute trotzdem versucht, weil die Funktion an und für sich noch gut wäre... Hab brav alles ins Design meiner Testumgebung reingenommen und so wies aussieht klappte das auch.

Nur: da ändert sich nix, weder gibts die genannten notes.ini einträge noch wird was in die Statuszeile vom Client ausgegeben.

Hab ich evtl. was vergessen (Berechtigung, ECL) dass dieses Script nicht startet nach öffnen der DB? Any Tips? Die Database Scripts sind mit meiner ID gesignt, diese hat Manager Rechte im Mailfile wie auch im DD, in der ECL ebenfalls alles angehakt.

Wie kontrollier ich ob das script zu laufen versucht hat?  :-:

Danke und guten appetit
« Letzte Änderung: 07.08.08 - 12:06:23 von Jag_rip »
Gruss Yves
______________________________________________

Diverse Kundensysteme mit Dominoservern v. 8.0.1 bis 8.5.2
... und noch ne Handvoll Blackberries sowie Traveler ...

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalender Profile automatisch füllen
« Antwort #5 am: 07.08.08 - 12:12:12 »
Hast Du die DB noch im Designer offen? Dann wird das DB-Script nicht ausgeführt.

Bernhard

Offline Jag_rip

  • Junior Mitglied
  • **
  • Beiträge: 89
  • Geschlecht: Männlich
  • veni, quaero, consulo...
Re: Kalender Profile automatisch füllen
« Antwort #6 am: 07.08.08 - 12:21:57 »
ok... ich versuchs nochmal, ich dachte ich hätte alles geschlossen.

Nein, klappt auch bei geschlossenem Designer nicht (Adminclient ist auch zu)

Kann ich irgendwo eine fehlermeldung nachvollziehen? Denn das Mailfile öffnet sich ohne Probleme, der einzige Eintrag in der Statuszeile ist "Client Execution Security is Enabled"
Gruss Yves
______________________________________________

Diverse Kundensysteme mit Dominoservern v. 8.0.1 bis 8.5.2
... und noch ne Handvoll Blackberries sowie Traveler ...

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz