次の方法で共有


ファイル ダウンロード API

ファイル ダウンロード API を使用すると、ユーザーがカスタム ビジュアルからストレージ デバイス上のファイルにデータをダウンロードできます。 視覚化をダウンロードするには、管理者グローバル スイッチで提供されるユーザーの同意と管理者のアクセス許可が必要です。 この設定は、組織のエクスポートと共有のテナント設定で適用されるダウンロード制限とは別であり、影響を受けません。

カスタム視覚化のダウンロードを有効にする管理者設定のスクリーンショット。

Note

ファイル ダウンロード API には 3 つのメソッドがあります。

  • exportVisualsContent は API バージョン 4.5 以降で利用できます
  • status は API バージョン 4.6 以降で利用できます。
  • exportVisualsContentExtended は API バージョン 5.3 以降で利用できます。
  • 使用しているバージョンを確認するには、pbiviz.json ファイルの apiVersion を確認してください。

次の種類のファイルにエクスポートするには、ファイル ダウンロード API を使います。

  • .txt
  • .csv
  • .json
  • .tmplt
  • .xml
  • .pdf
  • .xlsx

ダウンロードが開始される前に、そのビジュアルが信頼できるソースからのものであるかを確認するウィンドウが表示されます。

信頼できるソースからのものである場合にのみダウンロードを確認するように求めるスクリーンショット。

ファイル ダウンロード API の使用方法

ファイル ダウンロード API を使用するには、ビジュアル機能で特権配列に宣言を追加します。

ファイル ダウンロード API には 3 つのメソッドがあります。

2 つのメソッドの違いは戻り値です。

status メソッド

status メソッドは、ファイルダウンロード API の状態を返します。

  • PrivilegeStatus.DisabledByAdmin: テナント管理者スイッチがオフです
  • PrivilegeStatus.NotDeclared: ビジュアルには、特権配列内のローカル ストレージの宣言がありません
  • PrivilegeStatus.NotSupported: API はサポートされていません。 詳細については、制限に関するページを参照してください。
  • PrivilegeStatus.Allowed: API がサポートされ、許可されています。

exportVisualsContent メソッド

exportVisualsContent メソッドには次の 4 つのパラメーターがあります。

  • content: 文字列
  • filename: 文字列
  • fileType: 文字列 - .pdf または .xlsx ファイルにエクスポートするとき、fileType パラメーターは base64 である必要があります
  • fileDescription: 文字列

このメソッドは、ブール値に解決される promise を返します。

exportVisualsContentExtended メソッド

exportVisualsContentExtended メソッドには 4 つのパラメーターもあります。

  • content: 文字列
  • filename: 文字列
  • fileType: 文字列 - .pdf または .xlsx ファイルにエクスポートするとき、fileType パラメーターは base64 である必要があります
  • fileDescription: 文字列

このメソッドは、次のパラメーターを含む ExportContentResultInfo 型の結果で解決される promise を返します。

  • downloadCompleted – ダウンロードが正常に完了したかどうか。
  • filename – エクスポートされたファイルの名前。

例: ファイル ダウンロード API

カスタム ビジュアルのコンテンツを Excel ファイルやテキスト ファイルにダウンロードする方法の例を次に示します。

import IDownloadService = powerbi.extensibility.IDownloadService;
...

export class Visual implements IVisual {
    ...
    private downloadService: IDownloadService;
    ...

    constructor(options: VisualConstructorOptions) {
        this.downloadService = options.host.downloadService;
         ...

        const downloadBtn: HTMLElement = document.createElement("button");
        downloadBtn.onclick = () => {
            let contentXlsx: string = ...;//content in base64
            let contentTxt: string = ...;
            this.downloadService.exportVisualsContent(contentTxt, "mytxt.txt", "txt", "txt file").then((result) => {
                if (result) {
                    //do something
                }
            }).catch(() => {
                //handle error
            });

            this.downloadService.exportVisualsContent(contentXlsx, "myfile.xlsx", "base64", "xlsx file").then((result) => {
                if (result) {
                    //do something
                }
            }).catch(() => {
                //handle error
            });

            this.downloadService.exportVisualsContentExtended(contentXlsx, "myfile.xlsx", "base64", "xlsx file").then((result) => {
                if (result.downloadCompleted) {
                    //do something
                    console.log(result.fileName);
                }
            }).catch(() => {
                //handle error
            });
        };

        // if you are using API version > 4.6.0
        downloadBtn.onclick = async () => {
            try {
                const status: powerbi.PrivilegeStatus = await this.downloadService.exportStatus();
                if (status === powerbi.PrivilegeStatus.Allowed) {
                    const result = await this.downloadService.exportVisualsContent('aaaaa','a.txt', 'text/plain', 'aa');
                    // handle result
                } else {
                    // handle if the API is not allowed
                }

            } catch (err) {
                //handle error
            }
        }
    }
}

考慮事項と制限事項

  • API は、Power BI サービスと Power BI Desktop でのみサポートされます
  • ダウンロードされるファイルのサイズの上限は 30 MB です。
  • この API は特権 API です。