ファイル連携の準備事項
Googleドライブからファイルを連携には、準備が必要です。 まず、Googleドライブのコネクションの作成とそのコネクションのUnique IDや対象のGoogleドライブのドライブ IDを下記の図をご参考してご確認くだい。 指定のファイルをGoogleドライブから取得するためのクエリ文字列も、参考URLにて作ってURL Encodeの変換も済ませておいてください。- コネクションページにてコピー元であるGoogle Driveのコネクションを生成し、コネクションのUnique IDを取得

- URLから対象ドライブのIDと対象ファイル名を取得(下記の図の①と②に該当)

- Google Driveのガイドにある<クエリ文字列の例>を参考して、Google APIと対象ファイル名が取得のクエリ文字列を合体してURLをURL Encoderにて変換しておく(下記の例をご参照ください)
ファイル連携の手順
ここでは、Googleドライブからテキスト形式のファイル(TXT,CSV,TSV)をファイルストレージやデータベースに連携する手順を説明します。 まず、Xplentyでお馴染みのPackage作成/編集画面から [+ Add Component] をクリックし、SourceからREST APIのアイコンを選択します。REST APIコンポーネントを開き、下記の図のように詳細内容を設定して該当するファイルが選択されているかご確認ください。- RestAPIコンポーネントからGoogle APIを使ってファイルリストを取得 authentication typeはConnectionを選び、Google Driveコネクションを指定してください。

- Method - GET に設定
- URL -
https://www.googleapis.com/drive/v3/files?q=name+contains+%22head_content%22+and+mimeType%3D%22text%2Fcsv%22+and+%22<---対象ドライブのID--->%22+in+parents - Response - JSON と
$.files[*]を設定 Google APIのURLとファイル選択のクエリ文字列で作ったURLと。Responseは、JSONで受け取ります。

id, nameのフィルドを選択

- Filterコンポーネントで正規表現のマッチングにて、ファイルリストから連携対象のファイルIDとファイル名を選択

- Conditions :
AND - Operator :
Text matches (regex) - Value/Expression :
^100_.*$
- Selectコンポーネント上で
CCurlコマンドを用いてGETメソッドによるファイル連携を行い、ファイルの中身であるbody部のみを取得

- Expression :
CCurl(CONCAT('https://www.googleapis.com/drive/v3/files/', id, '?alt=media'), 'GET', '', '', '<---GoogleドライブのUnique ID--->')#'body'- 注意 : CCurlコマンドには、GoogleドライブコネクションのUnique IDを指定してください!!
- Alias :
api_response_body
- body部には1本の文字列としてファイルの中身が返されるので、Selectコンポーネント上で関数を使って各々のレコードに分離

- Expression :
Flatten(STRSPLITTOBAG(api_response_body, '\n')) - Alias :
line
- Filterコンポーネントで正規表現のマッチングにて、レコードからヘッダーレコードを除去

- 削除するヘッダー :
seq,name/first,name/last,age,street,city,state,zip,dollar,pick,date - Conditions :
NOT - Value/Expression :
^seq.+$
- Selectコンポーネント上で関数を使って、レコードをフィールド毎に分離された配列に変換

- Selectコンポーネントで配列の各々の要素に対して適切なデータ型に変換

- Destinationのファイルストレージやデータベースに保存

簡単な応用
ファイル連携の前後関係がなく、Googleドライブからの複数ファイル連携を1本のパッケージで管理したい場合、このような応用が可能です。- Googleドライブから複数のファイルを同時に連携 下記の図のように取得したファイルリストに複数のCloneコンポーネントを繋ぐ毎で1つのパッケージ実行で同時に複数のファイルが連携出来ます。

- 複数箇所のGoogleドライブとのファイル連携 複数のGoogle Driveコネクションを用意すれば、1本のパッケージの中に複数箇所のGoogleドライブからファイル連携も可能です。イメージとしては、上記の複数ファイル連携が横にいくつかが並ぶ形になります。
パッケージテンプレートの利用時に
今まで説明した内容について、XplentyではDataFlowのテンプレートとしてすでに提供しております。 下記の図ようにパッケージ作成画面でTemplateからすぐ見つかります。

- query_string : クエリ文字列を指定
- google_drive_connection_id : GoogleドライブコネクションのUnique IDを指定