Google Sheetsをデータパイプラインソースとして設定する
Google Sheetsをデータパイプラインソースとして設定し、スプレッドシートデータを送信先に抽出します。 選択した各シート(タブ)は独自のテーブルとして同期されるため、アドホックスプレッドシートのデータをデータウェアハウスに移動できます。
このガイドでは、コネクションの設定、パイプラインの構成、オブジェクトの同期方法、同期動作、スキーマとデータ型の処理、既知の制限について説明します。
サポートされている機能
Google Sheetsをパイプラインソースとして使用する場合、次の機能がサポートされます。
- クラウド接続: GoogleのグローバルAPIを通じて、HTTPS経由でGoogle Sheetsに接続します。 オンプレミスエージェントは不要です。
- フルリフレッシュ同期: スケジュールされた実行ごとに、選択したすべてのシートの完全な内容を読み取ります。 Google Sheetsは行レベルの変更タイムスタンプを公開しないため、増分同期はサポートされません。 詳細については、同期モードを参照してください。
- オブジェクトレベルの選択: 同期する個別のシートタブを選択します。 各タブは、送信先の個別のテーブルとして同期されます。
- 主キーに基づくアップサートまたは完全上書き: オブジェクトに主キーを設定して行をアップサートし、削除を追跡するか、主キーを未設定のままにして同期ごとに送信先テーブルを上書きします。 詳細については、同期モードを参照してください。
- スキーマドリフトの検出と処理: 新しいフィールドを自動同期でスキーマの変更を自動的に検出して適用するか、新しいフィールドをブロックでスキーマを固定します。
- フィールドレベルのデータ保護: 機密フィールドをそのままレプリケートするか、宛先に到達する前にハッシュ化します。
- 構成可能な同期頻度: 時間ベースの間隔またはcron式を使用して同期をスケジュールします。
前提条件
Google Sheetsをデータパイプラインソースとして接続する前に、次の要件を満たしてください。
- 同期するスプレッドシートへのアクセス権を持つGoogleアカウントまたはGoogle Cloud Platform(GCP)サービスアカウント
- 選択した認証方法の認証情報:
- OAuth 2.0: GoogleのOAuth同意フローを完了できるGoogleユーザーアカウント。
- サービスアカウント: GCPサービスアカウントのメールアドレスと秘密鍵。
必要な権限
同期する各スプレッドシートで、サービスアカウントに少なくとも閲覧者アクセス権を付与します。 サービスアカウントは、組織でDomain-Wide Delegationを設定していない限り、Driveフォルダーレベルの共有からアクセス権を継承しません。このコネクターではDomain-Wide Delegationはサポートされていません。 詳細については、制限事項を参照してください。
サポートされるコネクションタイプ
Google Sheetsデータパイプラインは、次の2つの認証方法をサポートしています。
- OAuth 2.0: GoogleのOAuth同意画面を通じて、Googleユーザーアカウントを使用して接続します。 Workatoでは、個人ユーザーまたはチームにこの方法を推奨しています。
- サービスアカウント: GCPサービスアカウントのメールアドレスと秘密鍵を使用して接続します。 Workatoでは、自動化された非対話型パイプラインにこの方法を推奨しています。 同期する各スプレッドシートで、サービスアカウントが明示的に共有されている必要があります。
Google Sheetsに接続する
Google Sheetsをデータパイプラインソースとして接続するには、次の手順を完了します。
Google Sheetsに接続する
Google Sheetsコネクターでは、次の認証方法がサポートされています:
サービスアカウント認証
サービスアカウントを使用すると、個人ユーザーアカウントなしで認証できます。 一貫した使用のため、Workatoではサービスアカウント認証をお勧めします。
OAuth 2.0
OAuth 2.0コネクションを設定するには、次の手順を実行します:
作成 > コネクションをクリックするか、Cを2回押します。
コネクション名フィールドにコネクションの名前を入力します。
OAuth 2.0コネクションフィールド
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
新規コネクションページで、コネクションとしてGoogle Sheetsを検索して選択します。
Authentication typeドロップダウンメニューを使用してOAuth 2.0を選択します。
任意です。 Formulaを無効化ドロップダウンメニューを使用して、Formulaを含む行の追加と更新を無効にするかどうかを選択します。
任意です。 Custom OAuth profilesドロップダウンメニューを使用して、このコネクションのカスタムOAuthプロファイルを選択します。
Googleでサインインをクリックします。
Googleアカウントでサインインします。
許可をクリックして、WorkatoによるGoogleアカウントへのアクセスを有効にします。
許可をクリックして、WorkatoがGoogleアカウントにアクセスできるようにします
サービスアカウント
Googleサービスアカウントは、Google Cloudプロジェクト(GCP)に関連付けられた専用のGoogleアカウントであり、ユーザーに代わってAPIリクエストを実行できます。
サービスアカウントには次の利点があります:
- 継続的な運用: サービスアカウントにより、個々のユーザー権限が変更された場合でも運用を継続できます。
- 専用の権限: サービスアカウントは、共有先として指定したプロジェクトにのみアクセスできます。
- 専用のAPIクォータ: GCPを通じてサービスアカウントのAPIクォータを管理し、Googleに直接クォータの引き上げをリクエストできます。
サービスアカウントの詳細については、Googleサービスアカウントのドキュメントを参照してください。
リアルタイムトリガーの制限
サービスアカウントは、Google Sheetsのリアルタイムトリガーをサポートしていません。 Google Sheetsをリアルタイムで監視するには、OAuth 2.0認証を使用します。
Googleサービスアカウントを設定する
サービスアカウント認証には、次の前提条件が必要です:
Googleサービスアカウントを設定するには、次の手順を実行します:
GCPプロジェクトでサービスアカウントを作成します。
IAMと管理>サービスアカウントに移動します。 ダッシュボードのスコープが、サービスアカウントを含むプロジェクトに設定されていることを確認します。
ダッシュボードのスコープを確認します。
使用するサービスアカウントのメールをクリックします。
使用するサービスアカウントのメールをクリックします。
サービスアカウントのメールをコピーし、後でコネクションを設定するために保存します。
アカウントのメールをコピーします。
キータブに移動します。
秘密鍵を生成し、JSON形式でダウンロードします。 キーは1回しかダウンロードできません。
JSONファイルを開き、秘密鍵全体を-----BEGIN PRIVATE KEY-----から-----END PRIVATE KEY-----\nまで(両端を含む)コピーして、後でコネクションを設定するために保存します。
サービスアカウントに関連付けられたメールアドレスには、レシピで使用する予定のGoogle Sheetsへのアクセス権が必要です。 Google Sheets内から特定のシートを共有できます。
サービスアカウントのメールアドレスでGoogle Sheetsスプレッドシートを共有する
Workatoでセットアップを完了する
サービスアカウントコネクションを設定するには、次の手順を実行します:
作成 > コネクションをクリックするか、Cを2回押します。
コネクションとしてGoogle Sheetsを検索して選択します。
コネクション名フィールドにコネクションの名前を入力します。
Google Sheetsサービスアカウントのコネクションフィールド
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
Authentication typeドロップダウンメニューを使用してService accountを選択します。
GCPプロジェクトサービスアカウントメールフィールドに、サービスアカウントのメールアドレスを入力します。
サービスアカウントの秘密鍵全体を入力します。これには-----BEGIN PRIVATE KEY-----と-----END PRIVATE KEY-----\nが含まれます。
任意です。 Advanced settings(詳細設定)に移動し、Requested permissions(Service auth scopes)(要求された権限(サービス認証スコープ))ドロップダウンメニューを使用して、コネクションのスコープを調整します。 Workatoは、デフォルトですべてのGoogle Driveファイルの表示とダウンロードおよびすべてのGoogle Sheetsスプレッドシートの表示、編集、作成、削除権限をリクエストします。 ドロップダウンメニューから選択した権限は、デフォルトの権限を上書きします。
任意です。 Formulaを無効化ドロップダウンメニューを使用して、Formulaを含む行の追加と更新を無効にするかどうかを選択します。
任意です。 Custom OAuth profilesドロップダウンメニューを使用して、このコネクションのカスタムOAuthプロファイルを選択します。
Googleでサインインをクリックします。
Googleアカウントでサインインします。
許可をクリックして、WorkatoによるGoogleアカウントへのアクセスを有効にします。
パイプラインの設定
Google Sheetsをデータパイプラインソースとして設定するには、次の手順を完了します。
作成 > データパイプラインを選択するか、C+Iを押します。
データパイプライン名フィールドにデータパイプラインの名前を入力します。
ロケーションドロップダウンメニューを使用して、データパイプラインを保存するプロジェクトを選択します。
構築を開始を選択します。
ソースアプリから新規/更新済みレコードを抽出トリガーをクリックします。 このトリガーは、パイプラインがGoogle Sheetsからデータを取得する方法を定義します。
使用可能なソースアプリのリストからGoogle Sheetsを選択します。
このパイプラインに使用するGoogle Sheetsコネクションを選択します。 または、+ 新規コネクションをクリックして新しいコネクションを作成します。
スプレッドシートが含まれているGoogle Driveを選択します。 1つのパイプラインで、このDrive内の複数のスプレッドシートからシートを同期できます。 別のDriveからシートを同期するには、別のパイプラインを作成します。
同期するシートを設定するには、オブジェクトを追加をクリックします。
Google Sheetsオブジェクトを追加
シート設定の構成:
スプレッドシートフィールドを使用して、同期するシートが含まれているスプレッドシートを選択するか、隣接するドロップダウンに切り替えてスプレッドシートIDを直接入力します。
シートドロップダウンメニューを使用して、テーブルとして同期するタブを選択します。
リストからシートを選択
フィールドを切り替えて、シート名を直接入力することもできます。
シート名を直接入力
シートの先頭行に列名が含まれているかどうかを示すには、ヘッダー行ドロップダウンメニューを使用します。 先頭行を列ヘッダーとして扱うにははいを選択し、すべての行をデータとして扱い、列にcol1、col2などの名前を自動的に付けるにはいいえを選択します。
Google Sheets設定を構成
任意です。 同期を特定の列に制限するには、列範囲フィールドにB:FなどのA1表記で範囲を入力します。 入力済みのすべての列を同期するには、このフィールドを空白のままにします。
Workatoが列値を読み取る方法を選択するには、列型を推測ドロップダウンメニューを使用します。 データから列型を検出するには、はいを選択します。 検出された型と一致しない値を含む行は同期に失敗します。 すべての列をテキストとして同期するには、いいえを選択します。
スキーマを取得をクリックします。
Workatoがシートで検出した列を確認します。 必要に応じて、主キーフィールドで1つ以上の列を選択します。
スキーマを確認
Workatoは、設定された列範囲内の列のみを取得します。 たとえば、A:Cを入力すると、検出されるスキーマは3列に制限されます。
A:Cの列範囲に制限されたスキーマを確認
主キーの選択
主キーを設定すると、送信先の行がアップサートされ、シートから削除された行が削除済みとしてマークされます。 代わりに、主キーを空白のままにすると、同期ごとに送信先テーブル全体が上書きされます。 詳細については、同期モードを参照してください。 最大5つの列を複合主キーとして選択できます。
オブジェクトを確認をクリックして、設定を確認します。
オブジェクトを確認
オブジェクト名を入力します。 この名前は宛先テーブル名を定義します。
完了をクリックして、オブジェクト設定を保存します。
選択した各オブジェクトのスキーマを確認してカスタマイズします。 オブジェクトを選択すると、そのスキーマが自動的に取得されるため、送信先がソースと一致します。
任意のオブジェクトを展開して、そのフィールドを表示します。 使用可能なすべてのデータを抽出するにはすべてのフィールドを選択したままにし、データ抽出とスキーマレプリケーションから除外するには特定のフィールドの選択を解除します。
任意です。 フィールドレベルのデータ保護を設定します。 オブジェクトを展開した後に各フィールドを処理する方法を選択します。
- そのままレプリケート(デフォルト): ソースのデータ値が宛先に同一にレプリケートされます。
- ハッシュ: 宛先に同期する前に、列内の機密データ値をハッシュ化します。
詳細については、機密データの処理を参照してください。
同じフローを使用してさらにオブジェクトを追加するには、もう一度オブジェクトを追加をクリックします。 同じDrive内の複数のスプレッドシートから、1つのパイプラインにシートを追加できます。
スキーマ変更の処理方法を選択:
- スキーマ変更を自動的に検出して適用するには、新しいフィールドを自動同期を選択します。
- スキーマ変更を手動で管理するには、新しいフィールドをブロックを選択します。 このオプションを使用すると、ソーススキーマが更新された場合に宛先が同期されなくなる可能性があります。
同期されていないスキーマ変更は、スキーマドリフトとも呼ばれ、管理しないと問題が発生する可能性があります。 詳細については、スキーマドリフトセクションを参照してください。
頻度フィールドで、パイプラインがGoogle Sheetsから送信先にデータを同期する頻度を設定します。 標準の時間ベースのスケジュールを選択するか、カスタムcron式を定義します。
オブジェクトの同期方法
各Google Sheetsオブジェクトは、スプレッドシート内の1つのシート(タブ)に対応します。 Workatoは先頭行からシートのスキーマを検出し、そのシートを送信先の独自のテーブルに同期します。 Workatoは、固定されたオブジェクトカタログに依存するのではなく、各コネクションに対してこのスキーマを検出して再構築します。
Workatoは、行と列で構成される標準シートであるグリッド型シートのみを同期します。 グラフシートとオブジェクトシート(埋め込み図形またはフォーム)はサポートされません。
オブジェクトとして選択した後にシートタブの名前を変更しても、Workatoは内部的にそのタブの追跡と同期を継続します。 タブを削除した場合、オブジェクトを削除または再設定するまで同期は失敗します。
ヘッダー行、空白のヘッダー、空の行
Workatoはシートを読み取るときに次のルールを適用します。
- ヘッダーセルが空白、または空白文字のみを含む列は同期から除外されます。 列を意図的にパイプラインから非表示にするには、空白のヘッダーを使用します。
- シートに同じヘッダー値を持つ列が2つ以上ある場合、Workatoは列の文字を付加して列を区別します。 たとえば、C列とG列にどちらも
Scoreという名前の列がある場合、Score_CおよびScore_Gとして同期されます。 - すべてのセルが空の行は送信先から除外されます。 Workatoは空の行をnull値のレコードとして保持しません。
同期モード
Google Sheetsデータパイプラインはフルリフレッシュ同期のみをサポートしています。これは、Sheets APIが行ごとのタイムスタンプや変更カーソルを公開しないためです。 Workatoは増分同期ではなく、スケジュールされた実行ごとに選択したすべてのシートの全内容を再読み取りします。
実行ごとの完全な再読み取りにより、Google Forms送信やIMPORTRANGE() Formulaからの変更を含め、変更方法に関係なくデータの変更を正しく取得できます。
削除追跡
オブジェクトをアップサートするか上書きするかは、オブジェクトを追加するときに主キーを設定するかどうかによって異なります。
- 主キーを設定済み: Workatoは主キーで照合して行をアップサートします。 シートから削除された行は送信先に残り、削除済みとしてマークされます。
- 主キーなし: Workatoは同期ごとに送信先テーブル全体を上書きします。 シートから削除された行も送信先から削除され、削除済み行の履歴はありません。
スキーマとデータ型の処理
Google Sheetsからデータを同期する場合、スキーマとデータ型には次の考慮事項が適用されます。
型推測
すべての列をテキストとして同期するには、列型を推測をいいえ(デフォルト)に設定します。 代わりに各列の型をデータから推測するには、はいに設定します。型は狭いものから広いものへ、boolean、integer、long、double、decimal、textの順に推測されます。
Workatoは、初回同期時に列の型を一度だけ推測し、その後は自動的に拡張しません。 後続の同期で、数値として推測された列にテキストが含まれるなど、推測された型と一致しない値が検出されると、その行は同期に失敗します。 列の値の型を変更する必要がある場合は、オブジェクトのスキーマをリセットします。
日付とタイムスタンプはテキストとして同期
Workatoは、列型を推測がはいに設定されている場合でも、Google Sheetsの日付またはタイムスタンプ値を日付型またはタイムスタンプ型に変換しません。 日付と時刻の値は、表示されたテキストとして同期されます(例: 1/15/2024)。 ロードが完了した後、送信先でこれらのフィールドを適切な型に変換します。
列名
Workatoは、スペースや特殊文字を含め、シートの列ヘッダーを入力されたとおりに正確に保持します。 Workatoは、SQLセーフな識別子を必要とする送信先に書き込む場合、列名を有効な識別子に自動的に変換します。
機密データの処理
Google Sheetsの列スキーマは完全にお客様が定義するため、同期される任意のシートの任意の列に個人を特定できる情報(PII)やその他の機密データが含まれる可能性があります。 固定されたオブジェクトカタログを持つコネクターとは異なり、Workatoはどのフィールドが機密であるかを事前に予測できません。
機密データを含むスプレッドシートを同期する前に、その列を確認し、そのまま送信先に到達させるべきでない列をマスクするには、フィールドレベルのデータ保護でハッシュオプションを使用します。 詳細については、パイプラインを構成手順を参照してください。
制限事項
Google Sheetsをデータパイプラインソースとして使用する場合、次の制限事項が適用されます。
1,000万セルの制限
Google Sheetsでは、タブごとではなくすべてのタブを合わせて、スプレッドシートあたり1,000万セルという厳格なプラットフォーム制限が適用されます。 たとえば、5つのタブを持つスプレッドシートは、1つの1,000万セルのプールを共有します。 デフォルトの列数26では、シートは約385,000行で上限に達します。最大列数18,278では、約547行で上限に達します。 この制限はWorkatoではなく、Googleによって適用されます。
Shared Driveのスプレッドシートはサポートされていません
このコネクターは現在、Shared Drive(Team Drive)に保存されているスプレッドシートをサポートしていません。 個人のGoogle Drive(My Drive)に保存されているスプレッドシートを使用してください。
Domain-Wide Delegationはサポートされていません
サービスアカウントは、明示的に共有されているスプレッドシートにのみアクセスできます。 サービスアカウントが所有していないシートへのアクセス権を継承できるDomain-Wide Delegationはサポートされていません。
APIキー認証はサポートされていません
Googleの公開APIキーでは非公開スプレッドシートへのアクセス権が付与されないため、WorkatoはこのコネクターでAPIキー認証をサポートしていません。 代わりにOAuth 2.0またはサービスアカウントを使用してください。
最終更新日: