Box ファイルアップロード(パスワード、期限)

Box のフォルダを指定してファイルをアップロードし、公開用URLを取得して文字型データ項目に格納します。ダウンロード用パスワード、ダウンロード期限を設定することができるので、ファイル共有等に利用できます。
Box ファイルアップロード(パスワード、期限)
box-file-update-20171010-addonxml
(md5:b5bb4358d7137b8b110a1fae9f211062)

    • B’: Bで選択したデータ項目に格納されているフォルダID
    • C’: Cで選択したデータ項目に格納されているファイル(1つ)
    • D’: Dで選択したデータ項目に格納されているダウンロード期限
    • E’: Eで選択したデータ項目に格納されているダウンロードパスワード
    • Box の指定フォルダにファイルがアップロードされ、ダウンロードの期限、パスワードが設定されます
    • ダウンロードURLが、Fで選択したデータ項目に格納されます
    • 通信ログが、Xで選択したデータ項目に格納されます
    • アップロードされるファイルは、1ファイルのみとなります
    • C のファイル型データ項目にて「最大添付ファイル数:1」を推奨

    A. OAuth2通信許可設定名 (←[OAuth 2.0 設定])単一行記述必須
    B. boxのフォルダIDが格納されている文字列型or選択肢型データを選択してください(ルートフォルダは"0")データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    C. アップロードするファイル型データを選択してください。データ項目選択ファイル型必須
    D. ダウンロード期限が格納されている日付型データを選択してくださいデータ項目選択日付型必須
    E. ダウンロードパスワードが格納されている文字型データを選択してくださいデータ項目選択文字列型必須
    F. ダウンロードURLが格納される文字型データを選択してください (更新)データ項目選択文字列型必須
    X. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_OAuth2OAuth2通信許可設定名 (←[OAuth 2.0 設定])
    Bconf_DataIdBboxのフォルダIDが格納されている文字列型or選択肢型データを選択してください(ルートフォルダは"0")
    Cconf_DataIdCアップロードするファイル型データを選択してください。
    Dconf_DataIdDダウンロード期限が格納されている日付型データを選択してください
    Econf_DataIdEダウンロードパスワードが格納されている文字型データを選択してください
    Fconf_DataIdFダウンロードURLが格納される文字型データを選択してください (更新)
    Xconf_DataIdX通信ログが格納される文字列型データを選択してください (更新)
    // (c) 2017, Questetra, Inc. (the MIT License)
    
    //// == Config Retrieving / 工程コンフィグの参照 ==
    var oauth2  = configs.get("conf_OAuth2") + "";
    var dataIdB = configs.get("conf_DataIdB") + "";
    var dataIdC = configs.get("conf_DataIdC") + "";
    var dataIdD = configs.get("conf_DataIdD") + "";
    var dataIdE = configs.get("conf_DataIdE") + "";
    var dataIdF = configs.get("conf_DataIdF") + "";
    var dataIdX = configs.get("conf_DataIdX") + "";
    
    //// == Data Retrieving / ワークフローデータの参照 ==
    var folderId = "";
    if(engine.findDataByNumber(dataIdB) instanceof java.util.ArrayList ){
      folderId = engine.findDataByNumber(dataIdB).get(0).getValue() + "";
    }else if( engine.findDataByNumber(dataIdB) instanceof java.lang.String ){
      folderId = engine.findDataByNumber(dataIdB) + "";
    }
    var files = engine.findDataByNumber(dataIdC);
    var download_limit = engine.findDataByNumber(dataIdD) + "";
    var download_password = engine.findDataByNumber(dataIdE) + "";
    
    //// == File Upload ==
    var accessLog = "";
    var responseJson = "";
    var token = httpClient.getOAuth2Token( oauth2 );
    
    if (files !== null) {
      var file = files.get(0);
      var attributes = {
        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";
    }
    
    // for Debug
    accessLog += responseJson + "\n";
    
    //// == ワークフローデータへの代入 / Data Updating ==
    if( dataIdX !== "" ){
      engine.setDataByNumber(dataIdX,accessLog);
    }
    
    var update_info_obj = {};
    
    update_info_obj.shared_link = {};
    update_info_obj.shared_link.access = "open";
    update_info_obj.shared_link.password = download_password;
    update_info_obj.shared_link.unshared_at = download_limit;
    update_info_obj.shared_link.permissions = {};
    update_info_obj.shared_link.permissions.can_download = true;
    
    var file_obj = JSON.parse(responseJson);
    var file_id = file_obj.entries[0].id;
    
    var response_update = httpClient.begin()
          .bearer(token)
          .body(JSON.stringify(update_info_obj), "application/json" )
          .put('https://api.box.com/2.0/files/' + file_id);
    
    accessLog += "---PUT request--- "
        + response_update.getStatusCode() + "\n";
    var updateResponseJson = response_update.getResponseAsString() + "\n";
    var update_file_obj = JSON.parse(updateResponseJson);
    engine.setDataByNumber(dataIdF, update_file_obj.shared_link.download_url);
    
    // for Debug
    accessLog += updateResponseJson + "\n";
    
    if( dataIdX !== "" ){
      engine.setDataByNumber(dataIdX,accessLog);
    }