ファイル ダウンロード 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
- .xlsx
ダウンロードが開始される前に、そのビジュアルが信頼できるソースからのものであるかを確認するウィンドウが表示されます。
ファイル ダウンロード API の使用方法
ファイル ダウンロード API を使用するには、ビジュアル機能で特権配列に宣言を追加します。
ファイル ダウンロード API には 3 つのメソッドがあります。
- status: は API バージョン 4.6 以降で利用できます。
exportVisualsContent
: API バージョン 4.5 以降で利用できますexportVisualsContentExtended
: API バージョン 5.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 です。