LoginSignup
0
0

More than 1 year has passed since last update.

Google Driveからファイル連携

Last updated at Posted at 2023-02-04

はじめ

Googleドライブは、Googleが提供している無料オンラインストレージです。
文書ファイルや写真、音楽、動画など、様々なデータをネット上で「Google Drive」と呼ばれるストレージに保存することができる非常に便利なサービスです。

今回の記事は、XplentyによるGoogleドライブ上のテキストやCSV/TSV形式のファイルを用いて他のシステムへの連携方法を紹介します。
主な連携先はDestinationの対象になるファイルストレージやデータベースになります。

より便利に使うための応用も紹介します。

ファイル連携の準備事項

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

  1. コネクションページにてコピー元であるGoogle Driveのコネクションを生成し、コネクションのUnique IDを取得
    image.png

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

  3. Google Driveのガイドにある<クエリ文字列の例>を参考して、Google APIと対象ファイル名が取得のクエリ文字列を合体してURLをURL Encoderにて変換しておく(下記の例をご参照ください)

## クエリ文字列の例
対象ドライブのIDの配下でファイル名にcontente_headが含まれてmimeTypeがCSV形式のファイルリストを取得

<Google APIのURL>
https://www.googleapis.com/drive/v3/files?q=<クエリ文字列>

<クエリ文字列>
name contains "head_content" and mimeType="text/csv" and "<---対象ドライブのID--->" in parents

<URL Encodeにて変換後のファイルリスト取得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

では、ここからXplentyを使ったファイル連携の本番です。下記の手順を順番に行えば、Googleドライブからファイル連携が出来ます。

ファイル連携の手順

ここでは、Googleドライブからテキスト形式のファイル(TXT,CSV,TSV)をファイルストレージやデータベースに連携する手順を説明します。
まず、Xplentyでお馴染みのPackage作成/編集画面から [+ Add Component] をクリックし、SourceからREST APIのアイコンを選択します。REST APIコンポーネントを開き、下記の図のように詳細内容を設定して該当するファイルが選択されているかご確認ください。

  1. RestAPIコンポーネントからGoogle APIを使ってファイルリストを取得
    authentication typeはConnectionを選び、Google Driveコネクションを指定してください。
    image.png
    Method and URLの設定は下記の通りです。

    • 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で受け取ります。
      image.png
      Data Previewerで対象ファイルリストが正しいか確認してid, nameのフィルドを選択
      image.png
  2. Filterコンポーネントで正規表現のマッチングにて、ファイルリストから連携対象のファイルIDとファイル名を選択
    image.png

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

    • 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
  4. body部には1本の文字列としてファイルの中身が返されるので、Selectコンポーネント上で関数を使って各々のレコードに分離
    image.png

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

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

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

  8. Destinationのファイルストレージやデータベースに保存
    image.png

簡単な応用

ファイル連携の前後関係がなく、Googleドライブからの複数ファイル連携を1本のパッケージで管理したい場合、このような応用が可能です。

  1. Googleドライブから複数のファイルを同時に連携
    下記の図のように取得したファイルリストに複数のCloneコンポーネントを繋ぐ毎で1つのパッケージ実行で同時に複数のファイルが連携出来ます。
    image.png

  2. 複数箇所のGoogleドライブとのファイル連携
    複数のGoogle Driveコネクションを用意すれば、1本のパッケージの中に複数箇所のGoogleドライブからファイル連携も可能です。イメージとしては、上記の複数ファイル連携が横にいくつかが並ぶ形になります。

パッケージテンプレートの利用時に

今まで説明した内容について、XplentyではDataFlowのテンプレートとしてすでに提供しております。
下記の図ようにパッケージ作成画面でTemplateからすぐ見つかります。
image.png

テンプレートの場合は、2つのユーザ変数の設定だけですぐ使えます。
image.png

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

終わりに

便利なGoogleドライブからファイル連携は、特にビズネス部署ではごく普通に行われています。
Xplentyはプログラミング経験がある方はもちろん、ビジネス部署でプログラミング経験がほとんど持っていない方々もすぐ慣れて使えるDX専門のローコードツールです。

ぜひ、Xplentyを使ってファイル連携のような簡単な業務から御社の自動化を自らの手で初めてみませんか?
弊社のホームページにて気軽にフリートライアルデモ申請が出来ます。心からお待ちしております。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0