CData Software Blog

クラウド連携のCData Software の技術ブログです。

ArcESB 機能紹介 - Google Drive Connector -

はじめに

本記事は、ArcESBでのGoogle Drive Connectorの利用方法についてご紹介します。

f:id:kuwazzy:20200331200601p:plain

ArcESB とは

ArccESBは、FTP / SFTP / SCP / WebDAVといった従来のファイル転送プロトコルに加えて、数多くのクラウドストレージやSaaSアプリケーションとの連携をサポートしているクラウドネイティブ・ハイブリッドクラウド時代のエンタープライズファイル転送プラットフォームです。

www.arcesb.com

Google Drive Connector とは

ArcESBからGoogle Driveへの接続にはMFTカテゴリ内のGoogle Drive Connectorを利用します。本コネクタを使うとGoogle Drive内のファイルのダウンロード(受信)、および、Google Driveへのファイルのアップロード(送信)が可能となります。

f:id:kuwazzy:20200331160939p:plain

Google Drive Connectorの使い方についてはArcESBの製品マニュアルもあわせてご覧ください。

cdn.arcesb.com ※日本語ヘルプへ差し替え予定

Google Driveへの接続

Google DriveへはOAuthベースのアカウント認証となります。そのため、事前にGoogle Drive側でAPIおよびアクセス時の認可に必要なクライアントID、および、クライアントシークレットの取得が必要となります。

Google Developer Consoleへのログイン

以下のサイトにGoogleアカウントでログインします。

console.developers.google.com

無償利用枠がありますが、トライアル期間が過ぎるとアカウントのアップグレードが必要になります。

f:id:kuwazzy:20200331183149p:plain

プロジェクトの作成

APIs & ServiceのDashboard画面から「CREATE PROJECT」ボタンからプロジェクトを作成できます。

f:id:kuwazzy:20200331165750p:plain

作成後は、左上のプロジェクト選択メニューで作成したプロジェクトに切り替えてください。本画面例では「ArcESB」というプロジェクトを作成しました。

f:id:kuwazzy:20200331183612p:plain

Google Drive APIの有効化

APIs & ServiceのLibraryを開き、Searchから「Google Drive」で検索してGoogle Drive APIを選択します。

f:id:kuwazzy:20200331183909p:plain

Google Drive APIをENABLE(有効)にしてください。

f:id:kuwazzy:20200331165837p:plain

APIs & ServiceのOAuth consent screenを開きます。User Typeに組織内(Internal)か外部(External)のどちらかを選択(本例では、Internalを選択)して作成します。

f:id:kuwazzy:20200331170151p:plain

Application nameに任意の名称(本例では、ArcESB)を付与して、Scopes for Google APIsにてGoogle Drive APIの各Scopeを付与して保存します。

f:id:kuwazzy:20200331184834p:plain

クライアントID、および、クライアントシークレットの取得

APIs & ServiceのCredentialsを開きます。「+Create credentials」から「OAuth Client ID」を選択します。

f:id:kuwazzy:20200331170011p:plain

Application typeからWeb applicationを選択します。Nameは任意の名称を付与してください(本例では、ArcESB)。Authorized redirect URIsにはArcESBが起動しているマシンのURL「http://mydomain.com:8001/src/oauthCallback.rst」をセットしてください(本例では、http://localhost:8001/src/oauthCallback.rst

f:id:kuwazzy:20200331185341p:plain

OAuth client createdのダイアログにクライアントID(Your Clinet ID)、および、クライアントシークレット(Your Client Secret)が表示されます。後の手順で必要となりますので手元に控えてください。

f:id:kuwazzy:20200331185851p:plain

ArcESBからの接続

ArcESBの「MFT」カテゴリ内の「Google Drive Connector」をフローペインにドラッグ&ドロップ操作で配置します。コネクタ名が求められるので任意の名称(本例ではGoogleDriveGet)を付与してください。

f:id:kuwazzy:20200331161616p:plain

右側にペインに配置したコネクタのプロパティエリアが表示されます。上記手順で取得したクライアントID(OAuth ClientId)とクライアントシークレット(OAuthClientSecret)をセットして接続ボタンをクリックしてください。ブラウザの別ウィンドウが起動してGoogleアカウントでのサインインが求められます。

f:id:kuwazzy:20200331190248p:plain

上記(OAuth consent Screen)で設定したScopeで許可が求められます。許可して次に進みます。

f:id:kuwazzy:20200331190355p:plain

緑のSuccess!とのメッセージが表示されれば、OAuthの認可フローが成功してArcESBからGoogleDriveへの接続は完了します。

f:id:kuwazzy:20200331170646p:plain

コネクタの接続設定を保存するため「変更を保存」ボタンをクリックしてください。

Google Driveからファイルを受信

本手順では、Google Drive内のファイルをArcESBマシンのローカルディレクトリに受信(ダウンロード)してみます。

Google Drive側のディレクトリの指定

上記手順で作成したコネクタ(本例では、GoogleDriveGet)の「設定 > 受信」内の「リモートフォルダ」にGoogleDriveから受信(取得)したいファイルが格納されているディレクトリを指定します(本例では「/ArcESB受信用」)。ルートディレクトリの指定は「/」(スラッシュ)となります。また、GoogleDrive側のファイルが更新されたて再度受信時にファイル名が重複した時の対応として「ローカルファイルを上書き」を「オン」にします。ちなみに「オフ」のままだとファイル名の後ろに連番の付与されたファイル名で取得されます。ここまで設定したら右上の「変更を保存」でコネクタを保存します。

f:id:kuwazzy:20200331193953p:plain

受信間隔の指定

「オートメーション」タブを開き、オートメーション設定内の「受信」を「オン」にしてReceive Intervalを「Minute」、分を「1」にセットします。これで1分間隔でGoogleDriveの該当ディレクトリを検索するようになります。ここまで設定したら右上の「変更を保存」でコネクタを保存します。

f:id:kuwazzy:20200331193224p:plain

受信するローカルディレクトリの確認

受信するディレクトリは、「Advanced」タブで確認できます。「アウトプットフォルダ(受信)」で指定されているディレクトリが受信するディレクトリになります(本例では、C:\Program Files\ArcESB\data\GoogleDriveGet\Receive )。

f:id:kuwazzy:20200401114624p:plain

受信の確認

Google Drive側のリモートフォルダとして指定したディレクトリ(本例では、MyDrive > ArcESB受信用)にファイルをアップロードしてみます。

f:id:kuwazzy:20200331193037p:plain

ArcESBに戻り「アウトプット」タブを開きます。GoogleDriveにアップロードしたファイルが受信されていることが確認できます。なお、受信の間隔は上記のオートメーションタブで設定した間隔(本手順の例では1分)で行われます。

f:id:kuwazzy:20200331194530p:plain

また、本画面の「受信」ボタンをクリックすることで任意のタイミングで受信することもできます。ただし、差分で受信するので、前回受信時から変更が無い場合は、下記メッセージ(The connection was successful, but no matching files were detected.)のように接続は成功したがファイルが無い旨のメッセージが表示されます。

f:id:kuwazzy:20200331194754p:plain

それでは、実際にGoogleDriveからArcESBが受信したファイルをみてみます。「Advanced」タブの「アウトプットフォルダ(受信)」で指定されているディレクトリパス(本例では、C:\Program Files\ArcESB\data\GoogleDriveGet\Receive )を実際にエクスプローラやlsコマンドでみてみましょう。GoogleDriveのファイルがArcESBの受信フォルダに格納されていれば受信は成功です。

f:id:kuwazzy:20200331195113p:plain

Google Driveにファイルを送信

本手順では、ArcESBマシンのローカルディレクトリ内のファイルをGoogle Driveに送信(アップロード)してみます。

Google Drive側のディレクトリの指定

上記手順で作成したコネクタ(本例では、GoogleDriveGet)の「設定 > 送信」内の「リモートフォルダ」にGoogleDriveに送信(アップロード)したいファイルが格納されているディレクトリを指定します(本例では「/ArcESB送信用」)。ルートディレクトリの指定は「/」(スラッシュ)となります。また、ローカルディレクトリのファイルが更新されたて再度送信時にファイル名が重複した時の対応として「リモートフォルダを上書き」を「オン」にします。ちなみに「オフ」のままだとファイル名の後ろに連番の付与されたファイル名で送信されます。ここまで設定したら右上の「変更を保存」でコネクタを保存します。

f:id:kuwazzy:20200401113712p:plain

送信間隔の指定

ローカルディレクトリからGoogle Driveへのファイルの送信は、ローカルディレクトリにファイルを配置したタイミングで自動で行われます。送信エラーが発生した場合の再試行間隔と回数を「オートメーション」タブから設定できます。デフォルトでは、再試行間隔:60、最大試行回数が5とセットされています。変更した場合は、右上の「変更を保存」でコネクタを保存します。

f:id:kuwazzy:20200401114137p:plain

送信するローカルディレクトリの確認

ファイルを送信するディレクトリは、「Advanced」タブで確認できます。「インプットフォルダ(送信)」で指定されているディレクトリが送信するディレクトリになります(本例では、C:\Program Files\ArcESB\data\GoogleDriveGet\Send )。なお、GoogleDriveへの送信が完了したファイルは「処理済みフォルダ(Sent)」で指定されているディレクトリに格納されます。

f:id:kuwazzy:20200401115009p:plain

送信の確認

上記「Advanced」タブ「インプットフォルダ(送信)」で指定されているディレクトリにファイルを配置してみます。送信が完了するとファイルが消えます。

f:id:kuwazzy:20200401115311p:plain

ArcESBに戻り「インプット」タブを開きます。上記ディレクトリに配置したファイルが送信されていることが確認できます。

f:id:kuwazzy:20200401115507p:plain

それでは、実際にArcESBからGoogleDriveに送信されたファイルをみてみます。Google Driveの送信用フォルダとして指定したフォルダ(本例では「/ArcESB送信用」)を開きます。なお、フォルダが無い場合はアップロード時にフォルダも作成されます。ArcESBからGoogleDriveに送信したファイルが格納されていれば送信は成功です。

f:id:kuwazzy:20200401115820p:plain

Tips

共有ドライブ にアクセス

Google DriveにはログインユーザのDriveであるMyDriveの他に、組織で共有して利用できる共有ドライブ(Shared Drive)があります。共有ドライブの詳細はGoogle社のヘルプをご覧ください。

support.google.com

f:id:kuwazzy:20200401120955p:plain

ArcESBでは、共有ドライブ内のファイルへのアクセスも可能です。「設定」タブ内の「送信[スコープ]」、または、「受信[スコープ]」を「Shared Drives」にセットしてその下の「Shared Drive」に共有ドライブ名を指定します。

f:id:kuwazzy:20200401121452p:plain

複数のディレクトリからファイルを受信

受信(GoogleDrive->ArcESB)の場合、リモートフォルダにカンマ区切りで複数のGoogleDriveのディレクトリを指定することが可能です。

送信(ArcESB->GoogleDrive)の場合は、ローカルディレクトリの指定は1つのみとなります。

f:id:kuwazzy:20200401122659p:plain

サブディレクトリ内ファイルの再帰的な転送

受信(GoogleDrive->ArcESB)の場合は、デフォルト設定ではリモートフォルダに指定したGoogleDriveのディレクトリ直下のファイルのみ転送されます。これを再帰的にリモートフォルダ配下の全てのファイルを受信するには以下の設定を行います。「Advanced」タブを開き、「その他の設定」内の「サブディレクトリを再帰」を「True」に変更します。

送信(ArcESB->GoogleDrive)の場合には、デフォルトでディレクトリ配下の全てのファイルがディレクトリ構造を保ったままGoogleDriveに送信されます。

f:id:kuwazzy:20200401124551p:plain

特定ファイルのみ送受信

ある拡張子のみ、または、あるファイル名のみを送受信の対象とすることが可能です。

受信(GoogleDrive->ArcESB)の場合は、「設定」タブの「受信」内の「ファイルマスク」で指定できます。「*.jpg」とアスタリスクワイルドカード指定が可能で本例だと拡張子です。ただし、本設定項目では複数の指定ができません。

f:id:kuwazzy:20200401134013p:plain

複数の指定、例えば、pptxとjpg二つの拡張子のファイルを送受信対象としたい場合は「Advanced」タブ内の下の方にある「受信フィルタ」「送信フィルタ」に「.pptx, .jpg」 のようにカンマ区切りで指定ください。

f:id:kuwazzy:20200401134831p:plain

GoogleDocs, GoogleSheets, GoogleSlideを形式を変更して受信

Google Drive内のGoogleDocs, GoogleSheets, GoogleSlideをローカルディレクトリに受信する際に、指定したフォーマットでの受信が可能です。デフォルトでは、以下のフォーマットに変換されて受信されます。これらの受信フォーマットをPDFなど他のフォーマットに変更することが可能です。

元フォーマット デフォルトでの受信フォーマット
GoogleDocs Microsoft Word(.docx)
GoogleSheets Microsoft Excel(.xlsx)
GoogleSlide Microsoft PowerPoint(.pptx)

「Advanced」タブ内の「ドキュメントのエクスポート形式」「シートのエクスポート形式」「スライドのエクスポート形式」にて任意の形式を指定してください。

f:id:kuwazzy:20200401135853p:plain

再受信時の差分チェック

受信(GoogleDrive -> ArcESB)した元のファイルに変更がなければ、次の受信インターバル設定の再実行時には再び受信しない設定になっています。ArcESBはこの差分チェックの仕組みを内部的なキャッシュ用DBにファイル名とサイズおよび更新日時を記録しておくことで実現しています。キャッシュ用DBの設定は「Advanced」タブのCachingにてどの項目(Size, TimeStamp)で差分チェックを行うか、そして、「Reset」ボタンからキャッシュをクリアすることができます。

f:id:kuwazzy:20200401140731p:plain

受信後ファイルの削除

受信(GoogleDrive->ArcESB)したファイルについて、元のGoogleDriveから削除することが可能です。「設定」タブの「受信」内の「ファイルを削除(受信後)」をオンにしてください。

f:id:kuwazzy:20200401135043p:plain