Google ドライブ: ファイル, コンバート

Google ドライブ: ファイル, コンバート
Google ドライブ: ファイル, コンバート (Google Drive: File, Convert)

Googleドライブ内ファイルを変換し、別の MimeType ファイルとして新規保存します。Googleファイルと一般ファイルの両方をサポートします。なお、File ID は URI 等から取得できます。(保存フォルダが無指定の場合、元ファイルの所属フォルダ情報を継承します)

2019-12-22 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/google-drive-file-convert/

Configs
  • A: 通信許可の設定名([OAuth2.0設定]メニュー)を選択してください *
  • B: コピー元ファイルID(FILE-ID)をセットしてください * #{EL}
  • C-folder: 新しいファイルが保存されるDriveフォルダのIDをセットしてください #{EL}
  • C-type: 新しいファイルの MimeType をセットしてください * #{EL}
  • D: 別名で保存したい場合、ファイル名をセットしてください #{EL}
  • E: 新しいファイルIDを取得したい場合、文字列型データ項目を選択してください(更新)
  • F: 新しいファイル名を取得したい場合、文字列型データ項目を選択してください(更新)
  • H: 編集用URLを取得したい場合、文字列型データ項目を選択してください(更新)
  • I: 閲覧用URLを取得したい場合、文字列型データ項目を選択してください(更新)
Script
// (c) 2019, Questetra, Inc. (the MIT License)

//// == OAuth2 Setting example ==
// Authorization Endpoint URL:
//  "https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force"
// Token Endpoint URL:
//  "https://accounts.google.com/o/oauth2/token"
// Scope:
//  "https://www.googleapis.com/auth/drive"
//  'drive.file' only gives you permission to files that your app has created
// Client ID:
//  ( from https://console.developers.google.com/ )
// Consumer Secret:
//  ( from https://console.developers.google.com/ )
//  *Redirect URLs: "https://s.questetra.net/oauth2callback"

// Refer to the file ID of the image from the URL in "Open in new window"
// If convert to "Google Docs", set MimeType to "application/vnd.google-apps.document"
// - https://developers.google.com/drive/api/v3/mime-types
// - https://developers.google.com/drive/api/v3/ref-export-formats

//////// START "main()" /////////////////////////////////////////////////////////////////

main();
function main(){ 

//// == Config Retrieving / 工程コンフィグの参照 ==
const oauth2   = configs.get( "conf_OAuth2"  ) + "";
const fileId   = configs.get( "conf_FileId")   + "";
const folderId = configs.get( "conf_FolderId") + "";
const mimeType = configs.get( "conf_MimeType") + "";
let   saveAs   = configs.get( "conf_SaveAs")   + "";
const dataIdE  = configs.get( "conf_DataIdE" ) + "";
const dataIdF  = configs.get( "conf_DataIdF" ) + "";
const dataIdH  = configs.get( "conf_DataIdH" ) + "";
const dataIdI  = configs.get( "conf_DataIdI" ) + "";
// 'java.lang.String' (String Obj) to javascript primitive 'string'
engine.log( " AutomatedTask Config: File ID: " + fileId );
if( fileId === "" ){
  throw new Error( "\n AutomatedTask ConfigError:" + 
                   " String {B} (File ID) is required \n" );
}
if( folderId === "" ){
  engine.log( "  (File will be placed directly in My Drive folder.)" );
}
engine.log( " AutomatedTask Config: Folder ID: " + folderId );
if( mimeType === "" ){
  throw new Error( "\n AutomatedTask ConfigError:" + 
                   " String {C-type} is required \n" );
}
engine.log( " AutomatedTask Config: New MimeType: " + mimeType );
engine.log( " AutomatedTask Config: Save As: " + saveAs );


//// == Data Retrieving / ワークフローデータの参照 ==
// nothing


//// == Calculating / 演算 ==
/// obtain OAuth2 Access Token
const token   = httpClient.getOAuth2Token( oauth2 );

/// post Copy Request
let apiRequest = httpClient.begin(); // HttpRequestWrapper
apiRequest = apiRequest.bearer( token );
apiRequest = apiRequest.queryParam( "supportsAllDrives", "true" );
// This parameter will only be effective until June 1, 2020.
// see https://developers.google.com/drive/api/v3/reference/files/copy

let requestObj = {};
if( folderId !== "" ){
  requestObj.parents = [];
  requestObj.parents[0] = folderId;
}
if( saveAs !== "" ){
  requestObj.name = saveAs;
}
requestObj.mimeType = mimeType;
// https://developers.google.com/drive/api/v3/mime-types
// https://developers.google.com/drive/api/v3/ref-export-formats

apiRequest = apiRequest.body( JSON.stringify( requestObj ), "application/json" );
const apiUri = "https://www.googleapis.com/drive/v3/files/" + fileId + "/copy";
engine.log( " AutomatedTask Trying: POST " + apiUri );
const response = apiRequest.post( apiUri );
const responseCode = response.getStatusCode() + "";
engine.log( " AutomatedTask ApiResponse: Status " + responseCode );
if( responseCode !== "200"){
  throw new Error( "\n AutomatedTask UnexpectedResponseError: " +
                    responseCode + "\n" + response.getResponseAsString() + "\n" );
}
const responseStr = response.getResponseAsString() + "";
const responseObj = JSON.parse( responseStr );
engine.log( " AutomatedTask ApiResponse: New File ID: " + responseObj.id );
engine.log( " AutomatedTask ApiResponse: New File MIME Type: " + responseObj.mimeType );


//// == Data Updating / ワークフローデータへの代入 ==
if( dataIdE !== "" ){
  engine.setDataByNumber( dataIdE, responseObj.id );
}
if( dataIdF !== "" ){
  engine.setDataByNumber( dataIdF, responseObj.name );
}
if( dataIdH !== "" ){
  engine.setDataByNumber( dataIdH, "https://docs.google.com/open?id=" + responseObj.id );
}
if( dataIdI !== "" ){
  engine.setDataByNumber( dataIdI, 
                          "https://drive.google.com/file/d/"+ responseObj.id + "/view" );
}

} //////// END "main()" /////////////////////////////////////////////////////////////////

Download

Capture

Googleドライブ内ファイルを変換し、別の MimeType ファイルとして新規保存します。Googleファイルと一般ファイルの両方をサポートします。なお、File ID は URI 等から取得できます。(保存フォルダが無指定の場合、元ファイルの所属フォルダ情報を継承します)
OCR Workflow Automation Example
OCR Workflow Automation Example

Notes

  1. 画像等のファイルIDは「新しいウィンドウで開く」で表示されるページのURLから参照します
  2. 保存先Folder-IDが指定されていない場合、ファイルはソースファイルの検出可能な親を継承します
  3. 「Google ドキュメント」への変換は MimeType= “application/vnd.google-apps.document” とセットします
    1. https://developers.google.com/drive/api/v3/mime-types
    2. https://developers.google.com/drive/api/v3/ref-export-formats
  4. 「MS-Office docx」から「Google ドキュメント」に変換するとアウトラインが取得されます
  5. 画像(JPEG, PNG, GIF, PDF)から「Google ドキュメント」に変換するとテキスト抽出(OCR)が実行されます
    1. “PDF や写真のファイルをテキストに変換する”
  6. 『Google ドライブ: Gファイル, Text エクスポート』とセットで利用するとOCR結果を業務データとして保存できます
  7. 「Google ドキュメント」から「MS-Office docx」といった変換はできません(2019年12月現在)
  8. 「MS-Office docx」から「Google スプレッドシート」といった変換はできません(2019年12月現在)
  9. 「PNG」から「JPEG」といった画像変換はできません(2019年12月現在)
  10. 変換成功の応答であっても、失敗しているケース(eg. PDF to IMG)があります(2019年12月現在)
  11. 一部のPDF書式では、テキスト抽出(OCR)の認識率が著しく低下する場合があります

See also

コメントを残す

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

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