Google Drive ファイルコピー

Google Drive 上のファイルを指定のディレクトリにコピーして保存します。 テンプレートとなるファイルを準備しておき、新規案件開始時に自動的にコピーするような用途で活用できます。

    A. OAuth2通信許可設定名 (←[OAuth 2.0 設定])単一行記述必須
    B. オリジナルファイルのIDが格納されている文字列型データor選択肢型データを選択してくださいデータ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    C. 生成ファイルの保存先フォルダのIDが格納されている文字列型データor選択肢型データを選択してくださいデータ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    D. 生成ファイルのファイル名が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    E. Team Drive へのアクセスがある場合には「true」とセットしてください単一行記述
    F. 生成ファイルのファイルIDが格納される文字列型データを選択してください (更新)データ項目選択文字列型(単一行)
    G. 生成ファイルのMimeTypeが格納される文字列型データを選択してください (更新)データ項目選択文字列型(単一行)
    X. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_OAuth2OAuth2通信許可設定名 (←[OAuth 2.0 設定])
    Bconf_DataIdBオリジナルファイルのIDが格納されている文字列型データor選択肢型データを選択してください
    Cconf_DataIdC生成ファイルの保存先フォルダのIDが格納されている文字列型データor選択肢型データを選択してください
    Dconf_DataIdD生成ファイルのファイル名が格納されている文字列型データを選択してください
    Econf_SupportsTeamDrivesTeam Drive へのアクセスがある場合には「true」とセットしてください
    Fconf_DataIdF生成ファイルのファイルIDが格納される文字列型データを選択してください (更新)
    Gconf_DataIdG生成ファイルのMimeTypeが格納される文字列型データを選択してください (更新)
    Xconf_DataIdX通信ログが格納される文字列型データを選択してください (更新)
    // Google Drive Files Copy via Drive API v3 (ver. 20170821)
    // (c) 2017, Questetra, Inc. (the MIT License)
    
    ////// == 工程コンフィグの参照 / Config Retrieving ==
    var oauth2  = configs.get( "conf_OAuth2" ) + "";
    // Convert from 'java.lang.String' to 'JavaScript string' by '+""'
    var dataIdB = configs.get( "conf_DataIdB" ) + ""; // Data Identification Number (e.g. "9")
    var dataIdC = configs.get( "conf_DataIdC" ) + ""; 
    var dataIdD = configs.get( "conf_DataIdD" ) + "";
    var supportsTeamDrives = configs.get( "conf_SupportsTeamDrives" ) + "";
    var dataIdF = configs.get( "conf_DataIdF" ) + "";
    var dataIdG = configs.get( "conf_DataIdG" ) + "";
    var dataIdX = configs.get( "conf_DataIdX" ) + "";
    
    ////// == ワークフローデータの参照 / Data Retrieving ==
    var fileId = ""; // e.g. "1PEZ5KEZc0RkUn7AbAe2lYaHXzbJ9jnZ2swIWPszRz6U"
    if( engine.findDataDefinitionByNumber( dataIdB ).matchDataType( "STRING_TEXTFIELD" ) ){
      fileId = data.get( dataIdB ) + ""; // convert to JavaScript string
    }else if( engine.findDataDefinitionByNumber( dataIdB ).matchDataType( "SELECT_SINGLE" ) ){
      fileId = data.get( dataIdB ).get(0).getValue() + "";
    }
    var parent = ""; // e.g. "0B0P-A0cQe_0gTnp0aDZmM0VYbGs"
    if( engine.findDataDefinitionByNumber( dataIdC ).matchDataType( "STRING_TEXTFIELD" ) ){
      parent = data.get( dataIdC ) + "";
    }else if( engine.findDataDefinitionByNumber( dataIdC ).matchDataType( "SELECT_SINGLE" ) ){
      parent = data.get( dataIdC ).get(0).getValue() + "";
    }
    var name   = data.get( dataIdD ) + "";
    
    ////// == 演算 / Calculating ==
    // preparing for API Request
    var apiRequest = httpClient.begin(); // HttpRequestWrapper
    
    // preparing for API Request (OAuth2 Access Token)
    var token = httpClient.getOAuth2Token( oauth2 );
    apiRequest = apiRequest.bearer( token );
    
    // preparing for API Request (Path parameters)
    var apiUri = "https://www.googleapis.com/drive/v3/files/" + fileId + "/copy";
    
    // preparing for API Request (Query parameters)
    if( supportsTeamDrives === "true" ){
      apiRequest = apiRequest.queryParam( "supportsTeamDrives", true );
    } // API default 'false'
    
    // preparing for API Request (JSON Body)
    var requestObj = {};
      requestObj.parents = [];
      requestObj.parents[0] = parent;
      requestObj.name = name;
    apiRequest = apiRequest.body( JSON.stringify( requestObj ), "application/json" );
    
    // POST Request to the API
    var response = apiRequest.post( apiUri ); // HttpResponseWrapper
    var statusCode = response.getStatusCode() + "";
    var accessLog = "";
    accessLog += "---POST request--- " + statusCode + "\n";
    accessLog += response.getResponseAsString() + "\n";
    
    // Retrieve Properties from Response-JSON
    var newFileId = "";
    var newFileMimeType = "";
    if( statusCode == "200" ){
      var responseObj = JSON.parse( response.getResponseAsString() );
      newFileId  = responseObj.id;
      newFileMimeType = responseObj.mimeType;
    }
    
    ////// == ワークフローデータへの代入 / Data Updating ==
    if( dataIdF !== "" ){
      retVal.put( dataIdF, newFileId );
    }
    if( dataIdG !== "" ){
      retVal.put( dataIdG, newFileMimeType );
    }
    if( dataIdX !== "" ){
      retVal.put( dataIdX, accessLog );
    }
    

    • B’: Bで選択したデータ項目に格納されているコピー元ファイルのファイルID *
    • C’: Cで選択したデータ項目に格納されている保存先フォルダのフォルダID **
    • D’: Dで選択したデータ項目に格納されている生成ファイルのファイル名
    • ファイルID B’ のファイルを元に新しいファイルがコピー生成され、 フォルダID C’ のフォルダに保存されます
    • 生成ファイルのファイルIDが F で選択したデータ項目に格納されます
    • 生成ファイルの MimeType が G で選択したデータ項目に格納されます
    • 通信ログが X で選択したデータ項目に格納されます
    • 事前に Google API Manager にてProject登録をしておく必要があります
    • 指定のファイルIDやフォルダIDが無い場合はエラーとなります
    • * https://drive.google.com/file/d/023W9z6__EXAMPLE__D45EFmY1E/view
    • ** https://drive.google.com/drive/folders/0_example_EXAMPLE_example_dvamc