Google Drive アップロード

ファイル型データ項目で指定されたファイルを Google Drive の指定のディレクトリにアップロードし、通信ログをテキスト型データ項目に格納します

    A. OAuth2通信許可設定名 (←[OAuth 2.0 設定])単一行記述必須
    B. DriveフォルダID が格納されている文字列型データor選択肢型データを選択してください(存在しない場合、エラー)データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    C. アップロードファイルが格納されているファイル型データを選択してくださいデータ項目選択ファイル型必須
    X. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_OAuth2OAuth2通信許可設定名 (←[OAuth 2.0 設定])
    Bconf_DataIdBDriveフォルダID が格納されている文字列型データor選択肢型データを選択してください(存在しない場合、エラー)
    Cconf_DataIdCアップロードファイルが格納されているファイル型データを選択してください
    Xconf_DataIdX通信ログが格納される文字列型データを選択してください (更新)
    // Upload to Google Drive via Drive APIs v3 (ver. 20161019)
    // (c) 2016, Questetra, Inc. (the MIT License)
    
    //// == 工程コンフィグの参照 / 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 token = httpClient.getOAuth2Token( oauth2 );
    
    for( var i = 0; i < files.size(); i++  ){
      var uri = "https://www.googleapis.com/upload/drive/v3/files?uploadType=media";
      var response = httpClient.begin()
        .bearer( token )
        .body( files.get(i) )
        .post( uri );
      accessLog += "---POST request--- " + response.getStatusCode() + "\n";
      accessLog += response.getResponseAsString() + "\n";
    
      var jsonObj = JSON.parse( response.getResponseAsString() );
      var uri2 = "https://www.googleapis.com/drive/v3/files/";
      uri2 += jsonObj.id;
      var myObj2 = {};
      myObj2.name = files.get(i).getName() + "";
      var response2 = httpClient.begin()
        .bearer( token )
        .queryParam( "addParents", folderId )
        .queryParam( "removeParents", "root" )
        .body( JSON.stringify( myObj2 ), "application/json" )
        .patch( uri2 );
      accessLog += "---PATCH request--- " + response2.getStatusCode() + "\n";
      accessLog += response2.getResponseAsString() + "\n";
    }
    
    //// == ワークフローデータへの代入 / Data Updating ==
    if( dataIdX !== "" ){
      retVal.put( dataIdX, accessLog );
    }
    

    • B’: Bで選択したデータ項目に格納されている Google Drive フォルダ ID *
    • C’: Cで選択したデータ項目に格納されているファイル
    • ファイル群 C’ が、指定のディレクトリ B’ にアップロードされます
    • 通信ログが X で選択したデータ項目に格納されます
    • G Suite (旧 Google Apps)ユーザは[サービスタスク(Googleドライブ)](M229)の利用をご検討ください
    • 事前に Google API Manager にてProject登録をしておく必要があります
    • 指定のフォルダIDが無い場合はエラーとなります
    • ファイル名が競合(コンフリクト)する場合は同名で複数保存されます
    • * https://drive.google.com/drive/folders/0BexampleEXAMPLEexampledvamc