LoginSignup
0
0

More than 3 years have passed since last update.

PowerShellからLotusScirptのクラスを呼んだときのGetFirstDocumentの挙動について

Last updated at Posted at 2017-11-05

PowerShellからLotusScirptのクラスを呼んだときのGetFirstDocumentの挙動について

※この記事の内容は、以下環境下で確認しています。

  • Windows7 SP1
  • IBM Notes 9 Social Edition リリース 9.0.1FP5 SHF190

 PowershellでLotusScriptを利用してNotesDocumentCollectionからGetFirstDocumentを呼ぶとうまくいかないようです。

GetFirstDocumentのサンプルコード
$ss = New-Object -COMObject Lotus.NotesSession
$ss.Initialize("")
$db = $ss.GetDatabase("", "names.nsf")
$docCol = $db.AllDocuments
$doc = $docCol.GetFirstDocument

Write-Output $doc.Created

 上記サンプルコードをは以下のような動きをする想定ですが、作成日が返ってきません。

  1. names.nsfのすべての文書を含むオブジェクトを取得(\$docCol)
  2. そのオブジェクト内最初の文書のオブジェクトを取得(\$doc)
  3. 最初の文書の作成日を返す

 デバッグしてみると以下のように\$docに値が入っていないことが分かります。
 \$docにうまく値がセットされないようです。

GetFirstDocumentサンプルコードの$docの値をデバッグ
>> $doc

OverloadDefinitions            
-------------------            
IDocument GetFirstDocument ()  


>> $doccol


Count     : 334
IsSorted  : False
Parent    : System.__ComObject
Query     : 
UntilTime : 

 一方、GetNthDocumentを使うとうまくいくようです。
 NotesDocumentCollection内全ての文書をチェックする場合、現時点ではGetNthDocument(1)で最初の文書を取得してから、GetNextDocumentを使うとよさそうです。

GetNthDocumentのサンプルコード
$ss = New-Object -COMObject Lotus.NotesSession
$ss.Initialize("")
$db = $ss.GetDatabase("", "names.nsf")
$docCol = $db.AllDocuments
$doc = $docCol.GetNthDocument(1)

Write-Output $doc.Created
GetNthDocumentサンプルコードの$docの値をデバッグ
>> $doc

(中略)
Created            : 2002/10/07 12:54:31
EmbeddedObjects    : 
EncryptionKeys     : {}
EncryptOnSend      : False
FolderReferences   : 
FTSearchScore      : 0
HasEmbedded        : False
HttpURL            : 
IsDeleted          : False
IsNewNote          : False
IsProfile          : False
IsResponse         : False
IsSigned           : False
IsUIDocOpen        : False
IsValid            : True
(以下略)

これが仕様なのかどうなのかについては、もう少し調べてみた上で、何か分かれば追記するつもりです。

(2020/06/21追記)
今後の状況の把握が難しくなりましたので、この記事の更新はこれ以上ありません。過去バージョンを利用するときに参考程度にご利用ください。

(2017/12/02追記)
LO93308: NOTESDATABASE#GETFIRSTDOPCUMENT DOES NOT WORK IN WINDOWS POWERSHELL としてAPAR番号がついたようです。修正の時期は未定。

(2017/03/07追記)
NotesDbDirectoryのGetNextDatabaseも、この現象とは少し違う応答になりますが、うまく戻り値を返せないようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0