SSRS 2017を設定しました。新しいREST APIを使用してSSRSレポートをエクスポートする必要があります。API仕様 こちら を調べてきましたが、できますt swagger仕様で、HTTPクライアントを使用してそのレポートをレンダリング/エクスポートするメソッドを見つけますこれは 質問 たぶん私が探しているものと同じものを求めています。
これまでのところ私が知っている現在、Microsoftが提供するRestAPIで利用可能なメソッドはありません here
rl Access(SSRS) を使用してレポートを生成する別の方法があります
SQL Server Reporting Services(SSRS)のレポートサーバーへのURLアクセスにより、URL要求を介してコマンドをレポートサーバーに送信できます。
URLアクセス構文
URL要求には、任意の順序でリストされている複数のパラメーターを含めることができます。パラメータはアンパサンド(&)で区切られ、名前と値のペアは等号(=)で区切られます。
URLアクセスを使用してレポートをエクスポートする
オプションで、rs:Format URLパラメーターを使用して、レポートを表示する形式を指定できます。 HTML4.0およびHTM5形式(レンダリング拡張機能)はブラウザーでレンダリングされ、他の形式の場合、ブラウザーはレポート出力をローカルファイルに保存するように要求します。
たとえば、PDFネイティブモードのレポートサーバーから直接レポートのコピーを取得するには:
http://myrshost/ReportServer?/myreport&rs:Format=PDF
構文を使用してこれにパラメーターを提供することもできます
http://myrshost/ReportServer?/activeusers&UserStatus=true&rs:Format=PDF
詳細については、
https://docs.Microsoft.com/en-us/sql/reporting-services/export-a-report-using-url-access
Seleniumの.Net DLLを使用して、レポートパラメータを設定するなど、レポートを呼び出すことができます。
コツは、ReportViewerControlがIFRAME内のパラメーターと「レポートの表示」ボタンを発行することです。 「ChroPath」Chromium拡張機能を使用すると、ページ内の要素への完全なXPathパスを取得できますが、そのパスは実際にはSelenium APIで機能しない場合があります。
ただし、IFRAMEに「フォーカスを設定」した場合:
#これを行うPowershellスクリプトから...
#まず、reportviewercontrol IFRAMEに切り替えます。
[無効] $ seldriver.SwitchTo()。frame(0)
...その後、相対XPathクエリを使用してIFRAME内の任意のHTML要素にアクセスできるはずですala
$ xpath = "// * [@ id = 'ReportViewerControl_ctl04_ctl03_txtValue']"
レポートを実行するには、[レポートの表示]ボタンでClickイベントを呼び出します。
大きな注意点は、ReportViewerControlによって生成されたHTML要素が、かなり乾燥した、連続して生成された名前とIDを持っていることです。しかし、Seleniumを使用すると、さまざまな方法でそれらにアクセスすることができます。
Powershellユーザーには、「Selenium」Powershellモジュールが役立ちます。ただし、ReportViewerControl IFRAMEへの切り替えなどのために、.DLLにディップする必要があります。
私がする必要があるもう1つのことは、リベラルなsleep N #n secondsコマンドを投入して、レポートの一部のレンダリングを完了させ、それらを含む変数に引き込むことです。
少なくとも、Powershellスクリプトでこれを実行しました。
レポートの呼び出しは本質的に非同期アクションのように見えますが、Selenium APIが実際にページレンダリングのイベントをスローするかどうかはわかりません。 Selenium APIは、理論的には、明示的なタイムアウト(および暗黙のタイムアウト)の設定などをサポートしています。
したがって、私の場合、SSRSサーバー上のすべてのレポートを呼び出して、実際に実行されるかどうかを確認します。 Seleniumは、Webブラウザーでレポートと「対話」するための良い方法のようです。