こんにちは。マーケティング担当の對馬です。このたびCData Drivers がV22へとバージョンアップとなり、Google Sheets Drivers の機能が強化されました。
今回のバージョンアップで追加された機能は以下の3つです。
- データ連携対象となるテーブルのセルレンジでの指定
- スプレットシートID、シートID でのデータ連携対象テーブル指定
- Folder プロパティに指定したフォルダの下階層にあるスプレッドシートの探索
各機能について、本記事でご紹介します。
CData Google Sheets Drivers とは
Google Sheets はGoogle 社が提供するウェブベースの表計算ソフト(スプレッドシート)です。日本ではGoogle スプレッドシートとも『スプシー』呼ばれています。
CData はGoogle スプレッドシート上のデータにBI ツールやDB、各種ETL ツールから接続するための「CData Google Sheets Drivers」を開発・提供しています。
https://www.cdata.com/jp/drivers/gsheets/
JDBC やODBC といった標準インターフェースを利用してGoogle Sheets に接続するため、普段利用しているあらゆるツールでGoogle スプレッドシート上のデータをシームレスに利用することが可能です。
CData Google Sheets Drivers 利用方法
CData Google Sheets Drivers は30日間の無償トライアルを用意しています。本記事ではDbVisualizer からGoogle Sheets データを取得するため、JDBC 向けのコネクタを利用します。なお、ODBC などの他コネクタでも同じような操作で各新機能を利用可能です。
CData Google Sheets JDBC Driver のインストール
CData Web サイトのGoogle Sheets Drivers ページからインストーラを取得します。V22以降で本記事で紹介する機能の利用が可能です。
https://www.cdata.com/jp/drivers/gsheets/
取得したインストーラを実行し、Driver をインストールします。
JDBC 接続文字列ビルダーの起動
JDBC 接続文字列ビルダーでは、接続のテストや接続文字列の生成ができます。Google スプレッドシートはOAuth 接続でつなぐので、JDBC 接続文字列ビルダーで接続をします。
インストールディレクトリ> lib フォルダにcdata.jdbc.googlesheets.jar
ファイルが格納されているので、jar ファイル(JDBC 接続文字列ビルダー)をダブルクリックして開きます。
Google スプレッドシートへの接続はOAuth 認証を利用して接続します。
AuthScheme をOAuth
に、InitiateOAuth をGETANDREFRESH
で設定します。
左下の[接続テスト]ボタンを押下します。Web ブラウザが開かれます。使用するアカウントを選択してください。
アカウントの選択後、アクセス許可のリクエスト画面が開かれます。内容を確認し、「許可」を選択します。
接続が確立されます。
新機能1:データ連携対象となるテーブルのセルレンジでの指定
新機能をご紹介します。まず1つ目は、データ連携の対象となるテーブルをセルレンジで指定が可能になりました。
スプレッドシートでは、A1 からシートがはじまりますが、以下の注文シートのようにデータ連携に使用するデータテーブル(行列形式でRDB 的なデータとして使えるテーブル)は、A1 ではなく、この例ではB8 からはじまるようなケースが多いです。
このような場合、デフォルト設定のままシートをデータ連携対象のテーブルとして指定すると、データテーブル形式ではない部分が含まれるため、カラム名に「注文書」が入ったり、テーブル内のレコードとしては利用できないデータが取得されてしまいます。
新機能では、データテーブルの範囲をセルで指定することで、シート全体ではなく、シート内のデータテーブルだけをSQL で操作可能なテーブルオブジェクトとして指定することが可能になります。
手順をご紹介します。
まずはDbVisualizer からGoogle Sheets に接続します。URL には、JDBC 接続文字列ビルダーで生成したURL を入力します。
jdbc:googlesheets:AuthScheme="OAuth";InitiateOAuth="GETANDREFRESH";
接続ができたら、スプレッドシートからデータを取得するSQL クエリを作成します。
以下のように、SQL 分の[テーブル名] に当たる部分で、スプレッドシート内のターゲットとなるデータテーブルの範囲を指定することができます。範囲は[シート名#Range]で記述して指定します。
SELECT * FROM [Order_Sheet1#B7:H12];
このようにセル範囲でデータテーブルを指定することでシート全体ではなくシートの一部がテーブルになっている、もしくは1つのシートに複数のテーブルが存在するようなGoogle スプレッドシートでも、データをSQL で操作可能な形で取得することが可能です。
新機能2:スプレットシートID、シートID でのデータ連携対象テーブル指定
新機能2つ目は、データ連携の対象テーブルをスプレッドシートIDやシートID で指定できるようになりました。
スプレッドシートID はスプレッドシートを識別するためのIDで、シートID はスプレッドシート内のシートに振り分けられるID です。それぞれのID は、対象のシートをブラウザで開いているときのURL で確認できます。
https://docs.google.com/spreadsheets/d/スプレッドシートID /edit#gid=シートID
Google スプレッドシートでは同じ名前のファイルを作成することができます。CData Google Sheets Drivers はスプレッドシートのファイル名をデータ操作するテーブル名として取得するため、同じ名前のスプレッドシートファイルが存在すると、同じ名前のテーブル存在することとなり、識別に時間と手間がかかります。スプレッドシートID やシートID を利用することで、一意に使用したいファイルおよびシートのデータを指定して接続することが可能になります。
利用の手順をご紹介します。
接続プロパティ「UseIdAsTableName」を有効にする
CData Google Sheets Drivers を介してGoogle スプレッドシートに接続する際に、接続プロパティ「UseIdAsTableName」をTrue
で設定し、有効にします。デフォルトではFalse
になっています。
DbVisualizer の接続文字列に以下設定を追加します。
UseIdAsTableName="True";
先に利用したJDBC 接続文字列ビルダーで、この接続プロパティを設定した接続文字列を作成することも可能です。
JDBC 接続文字列ビルダー > 接続プロパティ > Connection
DbVisualizer でのスキーマ取得時に、テーブル名がスプレッドシートID とシートID の表記に変更されていることが確認できます。
スプレッドシートID とシートID を使って、以下Google スプレッドシートデータを取得します。(利用しているデータはテストデータです。)
スプレッドシートID もしくはシートID をSQL 分のテーブル名として利用できます。以下のように指定します。
SELECT * FROM [スプレッドシートID_シートID];
テーブル名での取得と同様、シートのデータを取得できました。
新機能3:Folder プロパティに指定したフォルダの下階層にあるスプレッドシートの探索
新機能3つ目は、フォルダ下階層のスプレッドシートに接続することが可能になりました。
Google Drive に保存されているファイルを、フォルダ名を指定することでフォルダにあるスプレッドシートに接続することができます。V21 では、カンマ区切りで複数のフォルダを指定することで下の階層まで接続していました。その機能が強化され、上部のフォルダを指定するだけで、フォルダの中にあるさらに下の階層のスプレッドシートまで接続できるようになりました。
今回はマイドライブに「test 用フォルダ」を作成し、さらにそのなかに「test2」フォルダを作りました。test 用フォルダには「test1」、test2 フォルダには「test2」というスプレッドシートを置いてあります。
CData Google Sheets Drivers で「test 用フォルダ」を指定し、RecurseFolders プロパティを有効にすることで、test 用フォルダより下の階層であるtest2 フォルダまで接続することが可能になります。
利用の手順をご紹介します。
接続プロパティでの設定
接続時のURL にて接続フォルダ名を指定、RecurseFolders プロパティを有効にします。
FolderName="test用フォルダ";RecurseFolders="True"
JDBC 接続文字列ビルダーではConnection に設定項目があります。
スキーマ構造から下階層のファイルに接続できていることがわかります。
test2 ファイルのデータを取得します。以下SQL を実行します。
SELECT * FROM test2_Sheet1;
下階層のスプレッドシートに接続し、データを取得することができました。
まとめ
以上がV22 で新しくなったCData Google Sheets Drivers の機能です。いかがでしょうか。より直感的にGoogle Sheets データに接続するため、機能追加をしました。
CData Google Sheets Drivers はJDBC だけでなく、ODBC やADO.NET などさまざまなインターフェースに対応して用意しております。30日間の無償トライアルもございますので、ぜひお試しください!
https://www.cdata.com/jp/drivers/gsheets/
関連コンテンツ