(任意Webサイト): ファイル ダウンロード ((Any Website): File Download)
ファイルをダウンロードし、ファイル型データに追加します。指定したURLへGETリクエストが投げられ、そのレスポンスがファイルとして保存されます。別名保存も可能です。
https://support.questetra.com/ja/any-website-file-download/
2019-01-07 (C) Questetra, Inc. (MIT License)
Configs
  • A: File URL が格納されている文字列型or選択肢型データを選択してください *
  • B: ダウンロードファイルが追加格納されるファイル型データを選択してください (更新) *
  • Bx: 別名保存したい場合はファイル名をセットしてください #{EL}
  • C: Content Type が格納される文字列型データを選択してください (更新)
  • D: Byte サイズが格納される数値型データを選択してください (更新)
Script
//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA = configs.get( "conf_DataIdA" ) + "";
const dataIdB = configs.get( "conf_DataIdB" ) + "";
const saveAs  = configs.get( "conf_SaveAs" ) + "";
const dataIdC = configs.get( "conf_DataIdC" ) + "";
const dataIdD = configs.get( "conf_DataIdD" ) + "";
// convert 'java.lang.String' to 'javascript string'


//// == Data Retrieving / ワークフローデータの参照 ==
let fileUrl = "";
if( engine.findDataDefinitionByNumber( dataIdA ).matchDataType( "SELECT_SINGLE" ) ){
    fileUrl = engine.findDataByNumber( dataIdA ).get(0).getValue() + "";
}else{
    fileUrl = engine.findDataByNumber( dataIdA ) + "";
}
if ( ! fileUrl.startsWith('http') ) {
  throw new Error( '\n Invalid URL. URL must start with either http or https. \n' );
}


let processFiles = engine.findDataByNumber( dataIdB );
// java.util.ArrayList <com.questetra.bpms.core.event.scripttask.QfileView>
if (processFiles === null) {
  processFiles = new java.util.ArrayList();
}


//// == Calculating / 演算 ==
/// File Name (from URI Path with Regular Expression)
let fileName = "";
if( saveAs === "" ){
  fileName = fileUrl.match(".+/(.+?)([\?#;].*)?$")[1];
  if( fileName.endsWith('/') ){ fileName = "NoName"; }
}else{
  fileName = saveAs;
}

/// Access to the URL
let httpRequest = httpClient.begin(); // HttpRequestWrapper
// com.questetra.bpms.core.event.scripttask.HttpClientWrapper
const response = httpRequest.get( fileUrl ); // HttpResponseWrapper
const httpStatus  = response.getStatusCode() + "";
engine.log( "STATUS: " + httpStatus );
const qfile = new com.questetra.bpms.core.event.scripttask.NewQfile(
    fileName, response.getContentType(), response.getResponse()
  );

/// Error Handling
// (no action)


//// == Data Updating / ワークフローデータへの代入 ==
processFiles.add( qfile );
engine.setDataByNumber( dataIdB, processFiles );

if( dataIdC !== "" ){
  engine.setDataByNumber( dataIdC, response.getContentType() );
}
if( dataIdD !== "" ){
  engine.setDataByNumber( dataIdD, new java.math.BigDecimal(qfile.getLength()) );
} // java.lang.Long -> java.math.BigDecimal

Download

any-website-file-download.xml

Capture

自動ダウンロード

See also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください