Namen aus Gruppenverteiler löschen - Script

  • Hallo Gemeinde


    Ich versuche folgendes mittels einem kleinen Script zu automatisieren:


    Ich habe ein Adressbuch. In diesem Adressbuch gibt es lediglich sehr viele Gruppen. In diesen Gruppen sind verschiedene Mitglieder enthalten.


    Ziel: Nach eingabe eines FQDN-Namen z.B. Hans Wurst/NOTES/DE wird der Name aus ALLEN Gruppen gelöscht bzw. ist nirgens mehr Gruppenmitglied


    Ich bin in LotusScript ein blutiger Anfänger und habe zuvor alles nur mit Formelsprache erledigt.


    Soviel habe ich schonmal hinnbekommen:



    ich weiß soviel, dass das Feld im Adressbuch den namen "Members" hat.
    Vom theoretischen her muss ich ja den Inhalt des Feldes "Members" mit dem eingegebenen String vergleichen und diese Zeichenfolge dann aus dem Namensfeld löschen.


    Ich hab aber bisher keine Ahnung wie das zu realisieren ist.


    Kann mir jemand helfen?
    Das wäre sehr nett!


    Grüße

  • Wenn du Formeln kennst, kennst du bestimmt @Replace. Das hat ein LS-Equivalent.


    Beachte dabei aber, dass du per NotesName-Klasse aus dem Namen den vollqualifizierten Namen (CN=Hans Wurst/O=Notes/C=DE) machst, sonst findet Replace nichts...

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Warum Script, Formel tuts auch....


    Code
    _user:=@Prompt([OKCANCELEDIT]; "Name entfernen"; "Geben Sie den Namen ein, den sie entfernen möchten."; "");
    SELECT FORM="Group" & @IsAvailable(members) & @ismember(_user;members);
    field members := @trim(@replace(members;_user;""));


    Wie schon gesagt, du musst den vollqualifizierten Namen eingeben und auf Groß/Kleinschreibung achten. Oder du passt den Agenten noch ein wenig an :)

  • Zitat


    hadez16 schrieb:
    @ beyerste


    Muss ich den Code also in einen Agenten des Adressbuchs packen?


    Und woher kommt FORM=Group? Die Maske heißt doch "Gruppen"??


    Ja, einfach in einen Agenten kopieren.


    Die Maske hat noch einen Aliasnamen und dieser wird dann in das Dokument geschrieben.


  • CN=Hans Wurst/OU=Notes/O=Lotus/C=DE

  • ich habs grad mal ausprobiert


    wenn ich einen Agenten erstelle und ich angebe, dass er auf alle Dokumente angewandt werden soll, dann kommt für jede Gruppe die Eingabeaufforderung, ich solle den Namen eingeben


    wenn ich beim Agenten angebe "nur ausgewählte dokumente", dann macht ers eben nur für das eine Dokument, wenn ich mehrere Auswähle muss ich aber auch wieder den Namen öfters eingeben


    wie mache ich das denn nun am besten?

  • Mach es am besten mit einer Action, die auf UnprocessedDocuments läuft. Also

    Code
    ...
    Set uidb = ws.CurrentDatabase
    Set db=uidb.Database
    Set coll = db.UnprocessedDocuments
    ...
    Collection durchlaufen...fertig



    Gruss, Bernd

  • ja, tschuldigung. ich habe es nur mit einer Gruppe zum Testen ausprobiert.


    Dann müssen wir zwei Agenten machen:


    Agent 1: GruppenBereinigen (Ziel: keines)


    Code
    _user:=@Prompt([OkCancelEdit]; "Name entfernen"; "Geben Sie den Namen ein, den sie entfernen möchten."; "");@Environment("GroupRemove";_user);@PostedCommand([RunAgent];"GroupRemove"); @All



    Agent 2: GroupRemove (Ziel: alle Dokumente in Datenbank)


    SQL
    SELECT FORM="Group" & @IsAvailable(members) & @IsMember(@Environment("GroupRemove");members);
    FIELD members := @Trim(@Replace(members;@Environment("GroupRemove");""));


    Der 2. Agent muss so heissen, da er vom 1. Aufgerufen wird.


    Wie sagte mal jemand zu mir: Nichts ist so schlecht, dass es nicht als schlechtes Beispiel dienen könne.
    Aber es funktioniert jetzt. :)

  • Super, danke!


    Wo wird denn diese Umgebungsvariable "GroupRemove" abgelegt/angelegt bzw. von wo wird diese abgerufen?


    bin nur neugierig, aus der Hilfe geht das nicht hervor...oder in der notes.ini??


    MIND1


    danke trotzdem für die hilfe, Formelsprache ist mir aber etwas lieber :)