Lotus Notes 脚本

问题描述

我需要一个脚本,该脚本可以将个人文档中 InternetAddress 字段的值一一复制到 names.nsf 中,并将其附加到 User Name 字段中。有人可以帮忙编写一个工作脚本吗?

解决方法

这实际上可以通过一行公式完成,使用简单的赋值语句和列表附加运算符。这确实是您在所有 Lotus Notes 编程中可以做的最基本的事情。它甚至不需要使用任何@functions。

赋值的语法是:

FIELD fieldThatYouWantToSet := value;

列表追加运算符的语法是:

value1 : value2;

您唯一需要知道的另一件事是 value1 和 value2 可以简单地是现有项目(又名字段)的名称,第二项中的值列表将附加到第一项中的值列表.

然后,您需要做的就是将此单行代码放入一个针对当前视图中的所有文档运行的公式代理中,并在您处于视图中时从“操作”菜单中运行该代理。

,
Option-1: 

有几种方法可以实现这一点,最简单的是,正如用户之前指定的那样,一个简单的字段函数就可以做到。


FIELD UserName := UserNAme:InternetAddress;

您可以在 $UsersView 的代理中设置和运行上述字段功能

在选项 2 中,您还可以使用“UnProcessedDoc”功能并作为代理设置和运行。 但是,在这里,我编写了另一种在 $UsersView 中设置和作为代理运行的方法。

希望这有帮助,如果这对任何人有帮助,请批准此答案。

Option:2

目前,我的系统中没有 Domino,以测试此代码段。我希望有任何在线方法可以在我发布之前测试此代码段。

但是,从逻辑上讲,将此片段视为实现您目标的伪代码。 最重要的是,自从我用 Domino 编程以来,已经有十到两年的时间了。因为,我转向了 RDMS、DW、BI,现在转向了 Cloud……嗯,Cloud-9。 :)

这里是一段 lotus 脚本代码,用于将个人文档中 InternetAddress 字段的值一一复制到 names.nsf 中,并将其附加到 UserName 字段中。

Dim db As New NotesDatabase( "Names Db","names.nsf" )   
Dim view As NotesView
Dim doc As NotesDocument
Dim InternetAddress_value As Variant

Set view = db.GetView( "$Users" )

// loop thru all docs in $Users view.
// Get InternetAddress_value and rep it in UserName
Set doc = view.GetFirstDocument
If doc.HasItem("InternetAddress") Then
  While Not(doc Is Nothing)
      // in this line we concatenate username with IAaddress_value
      new_value= doc.GetItemValue( "username" ) + doc.GetItemValue( "InternetAddress" ) 
      Call doc.ReplaceItemValue( "UserName",new_value)
      Call doc.Save( False,True )
      Set doc = view.GetNextDocument(doc)
  Wend
End If


此解决方案由 Mangai@Notes@Domino@Now_HCL 发布。鼓励通过批准答案来发布更多解决方案。