如何使用 @Unique() 在 SSJS 中生成类似 Notes 的唯一字符串?

How to generate Notes-like unique string in SSJS using @Unique()?

在 Notes 公式中,@Unique 函数 return 一个基于 Notes 用户 ID 名称和时间的唯一字符串。因此,当我在 Notes 中创建多个文档时,唯一字符串的第一部分始终源自我的名字 Paul Della-NebbiA,如下所示: PDNA-AJBQYD PDNA-AJBQYL PDNA-AJBQYN

如果我使用不同的 ID App DEV2 登录 Notes,则 @Unique 字符串的第一部分如下所示: ADEV-AJBQZG ADEV-AJBQZQ ADEV-AJBQZS

我想在 SSJS 中生成类似的结果,以便在创建新文档时为它们生成唯一标识符。但是,@Unique() 字符串的第一部分似乎始终来自服务器和域名。

这是我用来生成唯一 ID 的 SSJS 代码:

newdoc.replaceItemValue("AssignmentId",session.evaluate("@Unique").elementAt(0) ); 

那么在 SSJS 中有没有办法让@Unique() 像在 Notes 中那样工作,并根据经过身份验证的用户名生成前四个字符?

也许你可以通过 Java 试试?在我的代码中,我使用 java.util.UUID.randomUUID().toString()

这可能有很长的路要走,但这是我在我的环境中用来模仿 Notes 唯一 ID 的方法。

var user = @Name("[CN]",session.getEffectiveUserName());
var last = @UpperCase(@Right(user," "));
var first = @UpperCase(@Left(user," "));
var a = @Left(first,1);
var b = @Left(last,2);
var c = @Right(last, 1);
var id = session.evaluate("@Unique").elementAt(0);
var d = @Right(id,6);

if (user == "Anonymous") {
return id;
}else{
a + b + c +  "-" + d;
};