Google Drive: ファイルコピー

Google Drive: ファイルコピー (Google Drive: Copy File)
既存ファイルを複製し、指定フォルダに新規保存します
2020-01-10 (C) Questetra, Inc. (MIT License)
Configs
  • C1: OAuth2設定名 *
  • C2: コピー元ファイルの ID * #{EL}
  • C3: 保存先フォルダの ID (空白の場合元ファイルと同じ場所に作成されます) #{EL}
  • C4: 新しいファイルのファイル名 (空白の場合自動的に設定されます) #{EL}
  • C5: 新しいファイルの ID を保存するデータ項目
  • C6: 新しいファイルの表示 URL を保存するデータ項目
Script
main();
function main(){
  //// == Config Retrieving / 工程コンフィグの参照 ==
  const oauth2 = configs.get( "OAuth2" ) + "";
  const fileId = configs.get( "SourceFileId" ) + "";
  const folderId = configs.get( "FolderId" ) + "";
  const saveIdData = configs.get( "DataForId" ) + "";
  const saveUrlData = configs.get( "DataForUrl" ) + "";
  const newFileName = configs.get( "NewFileName" ) + "";

  if(fileId === "" || fileId === null){
    throw "No Source File ID";
  }

  //// == Calculating / 演算 ==
  const token  = httpClient.getOAuth2Token( oauth2 );

  // preparing for API Request
  let apiRequest = httpClient.begin(); // HttpRequestWrapper
  // com.questetra.bpms.core.event.scripttask.HttpClientWrapper

  // Request HEADER (OAuth2 Token, HTTP Basic Auth, etc)

  apiRequest = apiRequest.bearer( token );

  // Request PATH (https://example.com/abc/def/)
  let apiUri = "https://www.googleapis.com/drive/v3/files/";
    apiUri += fileId;
    apiUri += "/copy";

  // Request QUERY (?a=b)
  apiRequest = apiRequest.queryParam( "supportsTeamDrives", true );
  apiRequest = apiRequest.queryParam( "fields", "id,webViewLink" );
  // Request BODY (JSON, Form Parameters, etc)
  let requestObj = {};
    requestObj.parents = [];
  
  if(folderId !== "" && folderId !== null){
    requestObj.parents[0] = folderId;
  }
    
  if ( newFileName !== "" && newFileName !== null ){ 
    requestObj.name = newFileName;
  }
  apiRequest = apiRequest.body( JSON.stringify( requestObj ), "application/json" );

  // Access to the API (POST, GET, PUT, etc)
  let response = apiRequest.post( apiUri ); // HttpResponseWrapper
  const httpStatus = response.getStatusCode() + "";
  let accessLog = "---POST request--- " + httpStatus + "\n";
  accessLog += response.getResponseAsString() + "\n";
  if (httpStatus >= 300) {
    const error = "Failed to copy \n status:" + httpStatus + "\n" + response.getResponseAsString();
    throw error;
  }
  const responseObj = JSON.parse( response.getResponseAsString() );

  // Retrieve Properties from Response-JSON
  const newFileId = responseObj.id;
  const newFileUrl = responseObj.webViewLink;
  // Error Handling
  // (no set)

  //// == Data Updating / ワークフローデータへの代入 ==
  if ( saveIdData !== "" ){ engine.setDataByNumber( saveIdData, newFileId ); }
  if ( saveUrlData !== "" ){ engine.setDataByNumber( saveUrlData, newFileUrl ); }
  engine.log(accessLog);
}

Download

Capture

Notes

  1. 複製を “マイドライブ” に保存する方法はありません。

See also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

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