box アップロード

ファイル型データ項目で指定したファイルを、box の指定のディレクトリにアップロードし、通信ログを文字型データ項目に格納します。

    A. OAuth2通信許可設定名 (←[OAuth 2.0 設定])単一行記述必須
    B. boxのフォルダIDが格納されている文字列型or選択肢型データを選択してください(ルートフォルダは"0")データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    C. アップロードファイルが格納されているファイル型データを選択してくださいデータ項目選択ファイル型必須
    X. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_OAuth2OAuth2通信許可設定名 (←[OAuth 2.0 設定])
    Bconf_DataIdBboxのフォルダIDが格納されている文字列型or選択肢型データを選択してください(ルートフォルダは"0")
    Cconf_DataIdCアップロードファイルが格納されているファイル型データを選択してください
    Xconf_DataIdX通信ログが格納される文字列型データを選択してください (更新)
    // Upload to box via boxAPI (ver. 20161018)
    // (c) 2016, Questetra, Inc. (the MIT License)
    
    // OAuth2 config
    // Authorization Endpoint URL: https://app.box.com/api/oauth2/authorize
    // Token Endpoint URL: https://app.box.com/api/oauth2/token
    // Scope: 
    // Consumer Key: (Get by box Application on box Developers)
    // Consumer Secret: (Get by box Application on box Developers)
    
    //// == 工程コンフィグの参照 / Config Retrieving ==
    var oauth2 = configs.get( "conf_OAuth2" );
    var dataIdB = configs.get( "conf_DataIdB" ); // (returns Number)
    var dataIdC = configs.get( "conf_DataIdC" ); // (returns Number)
    var dataIdX = configs.get( "conf_DataIdX" ); // (returns Number)
    
    //// == ワークフローデータの参照 / Data Retrieving ==
    var folderId = "";
    if( data.get( dataIdB ) instanceof java.util.ArrayList ){
      folderId = data.get( dataIdB ).get(0).getValue() + "";
    }else if( data.get( dataIdB ) instanceof java.lang.String ){
      folderId = data.get( dataIdB ) + "";
    }
    var files = data.get( dataIdC );
    
    //// == 演算 / Calculating ==
    var accessLog = "";
    var responseJson = "";
    var token = httpClient.getOAuth2Token( oauth2 );
    
    if (files !== null) {
      for (var i=0; i< files.size(); i++) {
        var file = files.get(i);
        var attributes = {
          //parent : '0'
          parent : {id : folderId}
        };
        attributes["name"] = String(file.getName());
    
        var response = httpClient.begin()
          .bearer(token)
          .multipart('attributes', JSON.stringify(attributes))
          .multipart('file', file)
          .post('https://upload.box.com/api/2.0/files/content');
        accessLog += "---POST request--- " + response.getStatusCode() + "\n";
        accessLog += file.getName() + "\n";
        responseJson += response.getResponseAsString() + "\n";
        
        //if (response.getStatusCode() !== 201) {
        //  throw "failed to upload: " + file.getName() + " status:" + response.getStatusCode();
        //}
      }
    }
    
    // for Debug
    accessLog += responseJson + "\n";
    
    //// == ワークフローデータへの代入 / Data Updating ==
    if( dataIdX !== "" ){
      retVal.put( dataIdX, accessLog );
    }
    

    • B’: Bで選択したデータ項目に格納されている box フォルダ ID *
    • C’: Cで選択したデータ項目に格納されているファイル
    • ファイル群 C’ が、指定のディレクトリ B’ にアップロードされます
    • 通信ログが X で選択したデータ項目に格納されます
    • 事前に box Developers にてアプリ登録をしておく必要があります
    • ルートフォルダを指定する場合は、フォルダIDに”0″を設定します
    • 指定のフォルダIDが無い場合はエラーとなります
    • ファイル名が競合(コンフリクト)する場合はエラーとなります
    • * https://{sub-domain}.app.box.com/files/0/f/11603741795/Folder-Name