在Notes公式中,@ Unique函数根据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中那样工作,并根据经过身份验证的用户名生成前四个字符?
答案 0 :(得分:7)
这可能还有很长的路要走,但我在我的环境中使用它来模仿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;
};
答案 1 :(得分:2)
也许你可以通过Java试试?在我的代码中,我使用了java.util.UUID.randomUUID().toString()