いくつかの事務処理を評価するために割り当てられた評価者の名前を格納するために単一のフィールドを使用する構成ドキュメントがあります。LotusScript では、これらの NotesNames を短縮名にメッセージして、あまり論争することなくリストを作成することができました。NotesName の配列はコンボボックスで使用され、ユーザーが評価者名を選択できるようにします。
Function getEvaluatorSelections As Variant
Dim evaluatorArray As Variant
ReDim evaluatorSelections (0) As String
Dim count As Integer
Dim evalName As NotesName
count = 0
evaluatorArray = DetermineMultiValueKeyword ("EVALUATORS")
ForAll entries In evaluatorArray
ReDim Preserve evaluatorSelections (count)
Set evalName = New NotesName ( entries )
evaluatorSelections (count) = evalName.Abbreviated
count = count + 1
End ForAll
If count = 0 Then
getEvaluatorSelections = username
Else
getEvaluatorSelections = evaluatorSelections
End If
End Function
XPages で同じことをしようとしたとき、Vector から始めて、SSJS の書き方をよく理解していなかったため、行き詰まってしまいました。
var thisdb = session.getCurrentDatabase();
var dbProfileView = thisdb.getView("dbprofile");
var evaluatorDoc = dbProfileView.getDocumentByKey("EVALUATORS");
var evaluatorVector:Vector = evaluatorDoc.getItemValue("Value");
return evaluatorVector.toArray();
これで完全な識別名が返されます。これで十分ですが、クライアントが見たいと思っているものではないことは確かです。
Vector 値を配列に入れて省略名を取得しようとしましたが、以下のコードのバリエーションでエラー 500 が発生し続けました。
var thisdb = session.getCurrentDatabase();
var dbProfileView = thisdb.getView("dbprofile");
var evaluatorDoc = dbProfileView.getDocumentByKey("EVALUATORS");
var evaluatorVector:Vector = evaluatorDoc.getItemValue("Value");
var evaluatorArray = new Array (evaluatorVector.toArray());
var returnArray = new Array();
var evalNames:NotesName;
for(var i=1;i<evaluatorArray.length;i++){
evalNames = New NotesName ( evaluatorArray[i] );
returnArray[i] = evalNames.getAbbreviated();
}
return returnArray();
LotusScript にあるものを SSJS に複製するにはどうすればよいですか? それとも、完全に間違ったアプローチをとったのでしょうか?