1

私の会社は最近 iManage (ファイル アーカイブ システム) の新しいバージョンにアップグレードしましたが、VBA に公開されているライブラリはもうありません。会社のポリシーにより、VBA を実行できますが、VSTO/.NET アドインを作成できません。

フォルダー/サブフォルダー内のすべてのアイテムのインベントリを作成するアドイン ツールを修正しようとしています。

私が現在模索している解決策は、新しい Web ポータルのフォルダーに移動し、そこからインベントリを作成することです。おそらく古典的なウェブクロールを実行して、ブラウザでリンクをクリックすることはできますが、それは遅く、かなり醜いものになるでしょう. これは Angular アプリケーションなので、ページの読み込みを待たずに REST リクエストを発行し、レスポンスを解析できるはずです。

InvalidToken が失敗として返されるという問題があります。

{
  "error": {
    "code": "InvalidToken",
    "message": "X-Auth-Token is invalid or missing"
  }
}

現在の解決策は、Excel VBA の UserForm 内に WebBrowser オブジェクトを作成することです。このユーザーフォームは、iManage ポータルに移動します。次に、サイトをナビゲートし、ボタンをクリックしてリクエストを開始します。

Private Sub CommandButton1_Click()
    Debug.Print WebBrowser1.Busy
    
    Dim Doc As HTMLDocument
    Set Doc = WebBrowser1.Document
    Debug.Print Doc.cookie

    Dim Request As New WinHttpRequest
    Request.Open "GET", Url:="https://imanage.xxxx.com/work/web/api/v2/customers/1/libraries/CLIENT-JOB/tabs/CLIENT-JOB!9975487/children?limit=500&offset=0&total=true", ASync:=False
    Request.setRequestHeader "Content-Type", "application/json"
    Request.setRequestHeader "Accept-Encoding", "gzip, deflate, br"
    Request.setRequestHeader "Accept-Language", "en-GB,en-US;q=0.9,en;q=0.8"
    Request.setRequestHeader "Connection", "keep-alive"
    Request.setRequestHeader "Host", Doc.Location.host
    Request.setRequestHeader "Referer", Doc.Location.href
    'Request.setRequestHeader "Cookie", WebBrowser1.Document.cookie
    Request.setRequestHeader "Set-Cookie", WebBrowser1.Document.cookie
    Request.setRequestHeader "X-XSRF-TOKEN", Split(Split(WebBrowser1.Document.cookie, ";")(2), "=")(1)
    Request.send

    Dim Result As String
    Result = Request.responseText
    Debug.Print Result
    
End Sub

Private Sub UserForm_Initialize()
     WebBrowser1.Navigate2 "https://imanage.XXXXX.com/work/web/r/custom2/recent-custom2?exclude_emails=true&scope=Admin,AdminArchive,Client-Job,JobArchive&p=1"
End Sub

Chromeで確認できるリクエスト呼び出しを複製していると感じています。
Chrome リクエストの詳細

問題の大部分は、WebBrowser 内で表示される HTMLDocument に、Chrome で表示されるのと同じ Cookie がすべてリストされていないことだと思います。

VBA のオブジェクト

ここに画像の説明を入力

4

1 に答える 1