IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-1
IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-2
こんばんは
サッカー日本代表vsウルグアイ戦を観戦してきてサッカーやりたくてうずうずしています
そんなこともありWorkspaceもこんな感じになってしまいました
話を戻しまして・・・
とうとう出ましたね、Notes/Domino V10
何がそんなに待ち遠しかったかというと・・・
NotesHTTPRequestクラス
この機能でどこまで社内の連携が変わるのかと思うとワクワクが止まりません
Beta版と若干変わっているようですが
![グッ](https://stat100.ameba.jp/blog/ucs/img/char/char3/114.png)
http://guylocke.blogspot.com/2018/10/ibm-notesdomino-v102.html
実際、どのように使用すれば良いのか
たまたま、先日のノーツコンソーシアムのクラウド研究会で
NotesHTTPRequestクラスの使い方を教えてもらったので共有したいと思います
ヘルプに使い方が載ってないなんて・・・
いけずですな
前回作成したXPagesのJSONを使って紹介していきます。
まずは前回のおさらい
Dim session As New NotesSession
Dim http As NotesHTTPRequest
url = "<取得したいURL>"
Set http = session.CreateHTTPRequest()
response = http.Get( url )
Msgbox response
これで以下のように取得できていました
実際欲しいのは、Field_5の値だったりするわけです。
値をぶん回して取得するそんなことやってられませんよね
そこで使用するクラスが
NotesJSONNavigator
NotesJSONElement
NotesJSONObject
になります
使い方は不明なのですが・・・
とか
実はちゃんと組み込まれていることがわかりました
では、実際の実装例です
1)フォームを作成し、ダイアログボックスとボタンを作成します。
ダイアログボックスの選択はイメージの通りです。
2)ボタンにLotusScriptを記述します。
やりたいことは、ダイアログボックスで選択した値を取得するです。
記述例:
Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim session As New NotesSession
Dim webRequest As NotesHTTPRequest
Dim URL As String
Dim returnVal As Variant
Dim jsonNav As NotesJSONNavigator
Dim jsonElement As NotesJSONElement
Dim jsonObj As NotesJSONObject
Dim jsonArrElem As NotesJSONElement
Set uidoc = uiws.CurrentDocument
Set doc = uidoc.Document
URL = "<<作成したXPagesのJSONのURL>>"
Set webRequest = session.CreateHTTPRequest
returnVal = webRequest.Get(URL$)
Set jsonNav = session.CreateJSONNavigator(returnVal)
Set jsonElement = jsonNav.GetFirstElement
Set jsonObj = jsonElement.Value
Set jsonArrElem = jsonObj.GetElementByName(doc.label(0))
Msgbox jsonArrElem.Value
ポイントを抜粋(為になるかは別)
前回、22行目までで終了していましたが24行目でsession.CreateJSONNavigatorの引数として取得したJSONをセットします。
25行目のNotesJSONElementには、以下の画像の赤枠部分が入ります(多分)。
既にお気づきの方もいると思いますが、GetLast・・・にすれば
一番下のエレメントをNotesJSONElementにセットできます。
デバッグで値を確認すると・・・
よくわかりませんね
26行目、NotesJSONObjectには以下の部分がセットされています(多分)。
デバッグで値を確認すると・・・
これまたよくわからないです
28行目、再度別で宣言したNotesJSONElementにNotesJSONElementで指定した値を取ってくるように(今回はラベル名)をセットします。
デバッグで値を確認すると・・・
おおー!
取れてるww
(ValueはやっぱりVariant)
動作確認
ダイアログからラベルを選択し、記述したスクリプトがあるボタンをクリックすると・・・
見事に欲しい値が取得できました
応用編として以下のような記述を追加するとLoop処理もできます。
Do Until jsonElement Is Nothing
Set jsonObj = jsonElement.Value
Set jsonArrElem = jsonObj.GetElementByName(doc.label(0))
Msgbox jsonArrElem.Value
Set jsonElement = jsonNav.GetNextElement
Loop
以上、簡単なデモでしたがNotesHTTPRequestの使い方わかりましたでしょうか
注意点としては「ヘルプに記載がなかった(?)」ので正しい使用方法なのかは不明ですので自己責任でやってみてください。
また、こちらのノーツコンソーシアムのブログにもWatsonと連携する方法が掲載されるはずですので合わせて参考にしてみてください
https://www.notescons.gr.jp/home.nsf/blogs.xsp
次回は、筆者もWatsonと連携するクライアントDBを作成して紹介できればと思います
では、今日はこの辺で・・・
あでゅー