ClimberCloud: ファイルアップロード

ClimberCloud: Upload File

この工程は、ClimberCloud の指定コンテンツ ID に「ファイル付きリスト」としてアップロードします。

Auto Step icon
Configs for this Auto Step
conf_TenantId
C1: テナント ID *#{EL}
conf_ApiKey
C2: API キー *#{EL}
conf_PdfFile
C3: アップロードする PDF ファイル *
conf_IndexFile
C4: アップロードするインデックスファイル *
conf_ContentsId
C5: アップロード先のコンテンツID *#{EL}
conf_doc_id
C6: Climber 管理 ID(doc_id) (更新)
conf_log
X: 通信ログを保存するデータ項目 (更新)
Script (click to open)


main();
function main(){
//// == Config Retrieving / 工程コンフィグの参照 ==
const tenantId         = configs.get( "conf_TenantId" ) + "";
const apiKey           = configs.get( "conf_ApiKey" ) + "";
const contentsId       = configs.get( "conf_ContentsId" ) + "";

const dataId_pdfFile   = configs.get( "conf_PdfFile" );
const dataId_indexFile = configs.get( "conf_IndexFile" );
const dataId_doc_id    = configs.get( "conf_doc_id" );
const dataId_log       = configs.get( "conf_log" );


//// == 演算 / Calculating ==
if ( tenantId == "" ) {
  throw `Tenant ID none.`;
}
if ( apiKey == "" ) {
  throw `API key none.`;
}
if ( contentsId == "" ) {
  throw `Contents ID none.`;
}

let accessLog = "";


//ファイルBase64変換
//ファイルの上限サイズは10MB
const files = engine.findDataByNumber( dataId_pdfFile );
let base64Text = "";
if (( !files ) || ( files.length != 1 )) {
  throw `PDF File Num invalid.`;
}
const file = files.get(0);
if ( file.getLength() > 10485760 ) {
  throw `PDF File size over.`;
}
fileRepository.readFile(file, 10485760, function(bytes) {
  base64Text += base64.encodeToString(bytes);
});
//engine.log("base64Text:" + base64Text);

const files2 = engine.findDataByNumber( dataId_indexFile );
let base64Text2 = "";
if (( !files2 ) || ( files2.length != 1 )) {
  throw `Index File Num invalid.`;
}
const file2 = files2.get(0);
if ( file2.getLength() > 10485760 ) {
  throw `Index File size over.`;
}
fileRepository.readFile(file2, 10485760, function(bytes) {
  base64Text2 += base64.encodeToString(bytes);
});
//engine.log("base64Text2:" + base64Text2);


//JSON生成
let requestObj = {};
  requestObj.data_file_name = file.getName();
  requestObj.index_file_name = file2.getName();
//  requestObj.scan_file_name = ;
  requestObj.ext_doc_id = processInstance.getProcessInstanceId();
  requestObj.contents_id = contentsId;
//  requestObj.shorting_folder_id = ;
  requestObj.compress_type = "0";
  requestObj.data_type = "1";
  requestObj.paper_type = "0";
  requestObj.host_type = "0";
  requestObj.data_file = base64Text;
  requestObj.index_file = base64Text2;
//  requestObj.scan_file = ;
//engine.log("json:" + JSON.stringify(requestObj));


//APIコール
const uri = "https://api.climber-cloud.jp/api/ArchiveRequest";
let response = httpClient.begin()
  .header( "X-Tenant", tenantId )
  .header( "X-ApiKey", apiKey )
  .body( JSON.stringify(requestObj), "application/json" )
  .post( uri );
accessLog += "---POST request--- " + response.getStatusCode() + "\n";
accessLog += response.getResponseAsString() + "\n";
engine.log("res:" + response.getResponseAsString());

const status = response.getStatusCode();
if( status >= 300 ){
  engine.log(accessLog);
  throw `Failed in POST request. status: ${status}`;
}


//APIコール結果確認
const jsonObj = JSON.parse( response.getResponseAsString() );
const isSuccess = jsonObj.isSuccess + "";
engine.log("isSuccess:" + isSuccess);
if ( isSuccess !== "0") {
  const message = jsonObj.message + "";
  engine.log("message:" + message);
  throw `Failed in request. isSuccess: ${isSuccess} message: ${message}`;
}


//// == ワークフローデータへの代入 / Data Updating ==
const doc_id = jsonObj.doc_id + "";
engine.log("doc_id:" + doc_id);
if ( dataId_doc_id !== "" ) {
  engine.setDataByNumber( dataId_doc_id, doc_id );
}

if ( dataId_log !== "" ) {
  engine.setDataByNumber( dataId_log, accessLog );
}

}

Download

warning 自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
(アドオン自動工程のインストールは Professional editionでのみ可能です)

Notes

  • ClimberCloud は NTTデータビジネスブレインズ社のサービスで、JIIMA認証を取得しています(電帳法・インボイス制度対応サービスです)。
  • 「ClimberCloud: インデックスファイル生成」とセットで使うことを想定しています。
  • ClimberCloud の APIキー 取得方法・インデックスファイル仕様詳細については、ClimberCloud サービス内(サポート>利用規約/仕様書>WEBAPI仕様書)から確認できます。ClimberCloud トライアルについては、ClimberCloud サイトからお申込ください。
  • ファイルアップロードの API 呼出の中で、「外部システム管理No(ext_doc_id)」として Questetra のプロセス ID を指定しています。

Capture

See Also

%d人のブロガーが「いいね」をつけました。