
Google Drive: ファイルコピー (Google Drive: Copy File)
既存ファイルを複製し、指定フォルダに新規保存します
2020-01-10 (C) Questetra, Inc. (MIT License)
2020-01-10 (C) Questetra, Inc. (MIT License)
Configs
- C1: OAuth2設定名 *
- C2: コピー元ファイルの ID * #{EL}
- C3: 保存先フォルダの ID (空白の場合元ファイルと同じ場所に作成されます) #{EL}
- C4: 新しいファイルのファイル名 (空白の場合自動的に設定されます) #{EL}
- C5: 新しいファイルの ID を保存するデータ項目
- C6: 新しいファイルの表示 URL を保存するデータ項目
Script (click to open)
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
- 複製を “マイドライブ” に保存する方法はありません。