リモートワークの普及に伴い、クラウドドキュメント管理ツールの利用が急増しています。中でも Google Docs は、Google Workspaceの中心的なプロダクトとして、共同編集・文書管理・承認ワークフローなど幅広い業務で活用されています。

一方で、Google Docs 上に蓄積された議事録や商談メモ、マニュアルなどの本文データを構造化して分析や検索に活かしたいというニーズも増えています。

本記事では、クラウドETLサービス「TROCCO」の Connector Builder を利用し、ノーコードでGoogle Docs API連携を実現する手順を具体的に解説します。

Google Docs API連携にETLツールが適している理由

Google DocsはGoogle DriveやApps Scriptなどを通じて多くの連携が可能ですが、これらはリアルタイム同期や限定的なスクリプト連携に留まります。一方で、データを継続的に格納し整形する前提がある場合は、ETLツールが適しています。

  • 定期的なドキュメント本文の取得と蓄積
  • 本文テキストを解析・検索しやすい形に整備
  • タイトルや作成者などの基本情報をあわせて保存し、後続の分析に活用

「TROCCO」はデータ転送だけでなく、データのフィルタリング、フォーマット変換、集計、マージなどの加工処理も一連のワークフローとして自動実行が可能です。これにより、Google Docs APIで得られる本文データを可視化や分析に適した形へ整備することが可能です。

この記事の執筆時点では「TROCCO」に公式のGoogle Docsコネクタはありませんが、Connector Builderを利用すれば、Google DocsのAPIをGUIで設定しながら手軽に自作コネクタを作成することができます。

Connector Builderとは?

ETLツールでは一般的に、2つの異なるインターフェース間の接続を可能にする実装のことを、コネクタと呼びます。

Connector Builderは、ユーザー自身で独自コネクタをノーコードで作成できるTROCCOの機能です。

  • OAuth認証(認可コード・クライアントクレデンシャルズ)やAPIキーの設定に対応
  • ページネーションや任意のクエリパラメータに対応
  • 通常のコネクタと同様にスケジュールによる定期実行が可能

詳細は下記の記事をご参照ください。
Connector Builder(コネクタビルダー)とは

※ Connector BuilderはTROCCOのAdvancedプラン以上のプランでご利用いただける機能です。

【実践編】Google Docs API連携カスタムコネクタをConnector Builderで作成してみる

事前準備

Google Docs API のリファレンス
https://developers.google.com/workspace/docs/api/reference/rest?hl=ja

Google Docs APIのガイド
https://developers.google.com/workspace/docs/api/how-tos/overview?hl=ja

認証に関するドキュメント(Google Workspace API)
https://developers.google.com/workspace/guides/auth-overview?hl=ja

Google Docs APIを利用するには、事前に Google Cloud 上でAPIを有効化し、認証情報を発行する必要があります。

Google Docs APIの認証方式には「APIキー方式」「OAuth クライアントID方式」「サービスアカウント方式」の3種類があります。
ただし、APIキーのみでアクセスできるのはパブリックなリソースに限られ、ユーザーのGoogleドキュメントにアクセスする場合はOAuth 2.0認証が必要です。

今回の事例では、ユーザーがアクセスできるGoogleドキュメントの内容を取得するため、ユーザーアカウントを用いた「OAuth クライアントID方式」による接続を前提に解説を行います。

STEP1:Google Cloud プロジェクトの作成と API の有効化

  1. Google Cloud Console にアクセスし、プロジェクトを作成
  1. 左上メニューから「APIとサービス」>「ライブラリ」を開き、「Google Docs API」を有効化
    1. ドキュメント一覧の取得を行う場合は、「Google Drive API」も有効化が必要

STEP2:OAuth同意画面の設定

  1. 左上メニューから「APIとサービス」>「OAuth同意画面」を開き、OAuth同意画面の設定
  1. ユーザータイプは 外部(External) を選択し、必要な項目を入力
    1. アプリ名(例:TROCCO Docs Connector)
    2. サポートメールアドレス
    3. 開発者連絡先メールアドレス
    4. プライバシーポリシーURL(任意でも空欄は避ける)

詳細はOAuth同意画面設定ドキュメントを参照

  1. 「スコープを追加」で以下を登録
    1. https://www.googleapis.com/auth/documents.readonly
    2. ドキュメント一覧の取得を行う場合は、以下も追加
      1. https://www.googleapis.com/auth/drive.metadata.readonly
  2. 「テストユーザー」に認証に使う Google アカウントを追加
    1. この設定により、検証未完了でも認証テストが可能になります。

※「OAuth 同意画面」 >「ブランディング」で同意画面の構成は後からでも修正可能です。

STEP3:認証情報(OAuth クライアントID)の作成

  1. 「APIとサービス」>「認証情報」を開き、「認証情報を作成」>「OAuth クライアントID」を選択
  1. アプリケーションの種類:ウェブアプリケーション
  2. 名前:{任意の名前}
  3. 承認済みのリダイレクト URI:https://trocco.io/connections/custom_connector/callback
  4. 「作成」ボタンを押下し、表示された クライアントID / クライアントシークレットを控える

※「承認済みのリダイレクトURI」には、TROCCO Connector Builder の指示にあるURI(https://trocco.io/connections/custom_connector/callback)を必ず設定してください。また、Postmanなどで事前にAPI検証する場合は、Postmanのcallbackも追加設定してください。この設定を誤ると認可リクエストが失敗します。

※ クライアントシークレットは一度しか表示されないため、必ず安全に控えておいてください。

カスタムコネクタの作成

TROCCOの「カスタムコネクタ」メニューから「新規作成」ボタンを押してカスタムコネクタを作成します。

STEP1: 基本設定

APIドキュメントを確認しながら、各種設定を「コネクタ情報」と「認証情報」に入力します。

今回は、ユーザーアカウントでの認証を行う「OAuth クライアントID方式」での接続を行うため、認証種別は「OAuth2」 を選択します。

認証は Google Authorization API を利用した認証を行うため、以下の公式ドキュメントを参照し、認可URLやアクセストークンURLなどの値を設定します。

ウェブサーバー アプリケーションに OAuth 2.0 を使用する > サーバー側ウェブアプリ向けのHTTP/RESTを参照

設定項目

項目設定内容
名前任意の名前 (例:Google Docs Connector)
ベースURLhttps://docs.googleapis.com
認証種別OAuth2
グラントタイプ認可コード
認可URL(※)https://accounts.google.com/o/oauth2/v2/auth?response_type=code&access_type=offline&prompt=consent&include_granted_scopes=true&
アクセストークンURLhttps://oauth2.googleapis.com/token

※ 通常、Connector Builderでは response_type=code などの基本パラメータは自動的に付与されますが、Google Authorization API の仕様上、access_type=offline および prompt=consent を指定しないと認可リクエスト時にリフレッシュトークン( refresh_token )が返却されません。

現時点では、Connector Builderの認可URL入力欄には個別パラメータ追加機能がないため、必要なパラメータをURLに直接付与する形で設定してください。

この設定を行うことで、認証後に refresh_token が正しく返却され、「TROCCO側で refresh_token がレスポンスに存在しない」というエラーを回避できます。

また、include_granted_scopes=true を指定しておくことで、すでに付与済みのスコープを保持したまま追加スコープをリクエストできるようになります。
今後、Google Docs 以外の API(例:Drive API)を併用する場合にも有効です。

各パラメータの詳細仕様については、Google Identity Platform: Authorization endpoint reference を参照してください。

補足:ドキュメント一覧を取得したい場合
Google Docs APIでは、個別のドキュメント内容(本文や段落構造)の取得は可能ですが、ドキュメントの一覧やメタデータ(タイトル・作成者・更新日時など)を直接取得することはできません。
もし複数ドキュメントの一覧を取得したい場合は、Google Drive API(GET https://www.googleapis.com/drive/v3/files)を利用する必要があります。

その場合、認証のAPI自体は Google Authentication API を利用するため設定方法は同じですが、APIリクエストを行うベースURLが異なるため、Google Docsと同様の手順で別のカスタムコネクタを作成してください。

Connector Builder上で Drive API の files.list エンドポイントを設定し、Drive API で取得した fileId を利用して Docs API の documentId に代入することで、「一覧取得しBigQueryへ転送 → BigQuery上のfileIdリストを利用しループでのコンテンツ取得」のような自動連携を実現できます。

STEP2: エンドポイントの定義

「エンドポイントを追加」ボタンを押して必要なAPIエンドポイントを追加します。

今回は、指定したドキュメントのデータ取得を行うエンドポイントを追加します。

「ドキュメント取得」エンドポイントの設定

項目設定値補足
名前ドキュメント取得
パス/v1/documents/{documentId}
パスパラメータdocumentIddocumentId は Google Docs ドキュメントのURLから取得できます。(形式:https://docs.google.com/document/d/{documentId}/edit?tab=0)
HTTPメソッドGET
パラメータ(※)パラメータ名:fields表示名:fieldsデフォルト値:title,body(content)編集可能:チェックする必須:チェックしない指定したフィールドのみをレスポンスとして取得するためのパラメータです。デフォルトでは全文が返却されますが、必要なプロパティを明示することでレスポンスサイズを最小化できます。
HTTPヘッダ設定しない
JSONPathルート$レスポンスを確認してデータの行が格納されている配列形式のキー名をJSONPath記法で記述してください。
今回は1つのドキュメントを1行としてデータ取得を行うエンドポイントとするため、レスポンス全体のルート ( $ ) を設定します。
ページング設定無効今回はページング設定は行いませんが、ページベース、オフセットベース、カーソルベースのページングの設定が行えます。
ステータスコード設定デフォルト設定のまま

※ 補足:fields パラメータによるレスポンス絞り込みについて

Google Docs API では、fields パラメータを指定することでレスポンスに含める項目を限定できます。この記事の手順では、基本的に以下の設定で十分です。

デフォルト設定(汎用):title,body(content)

この指定により、本文 (paragraph) や表 (table) を含むすべてのコンテンツ構造が返却されます。一方で、転送データ量を最小限に抑えたい場合は、以下のように fields を詳細に指定することで、不要な項目を省略できます。

軽量化設定(推奨)

title,body(content(paragraph(elements(textRun(content))),table(tableRows(tableCells(content(paragraph(elements(textRun(content)))))))))

これにより、paragraph と table 配下の textRun.content のみがレスポンスに含まれるため、BigQuery転送時のペイロードサイズを抑えつつ、本文と表の両方のテキストを正確に取得できます。

※ fields で絞り込みすぎると、未指定階層がレスポンスから除外されるため、JSONPathで該当要素を参照できなくなる点にご注意ください。

ここまで設定し、エンドポイントを保存し、さらにカスタムコネクタを保存すればカスタムコネクタの作成は完了です。

接続設定の作成

「接続情報」メニューをクリックし、接続情報一覧画面の右上の「新規接続情報作成」ボタンを押して接続情報を作成します。

カスタムコネクタは「その他」のタブの中にあります。

  1. 接続設定を作成したいカスタムコネクタを選択します。
  1. 「接続情報」画面で以下の項目を入力します
    • 名前: 接続設定の名前
    • リソースグループ: 接続を共有するグループがあれば選択します。
    • クライアントID: 事前準備で作成したクライアント情報を入力します。
    • クライアントシークレット: 事前準備で作成したクライアント情報を入力します。
    • スコープ: https://www.googleapis.com/auth/documents.readonly
  1. 「認証」を押して認証を完了させます。
    • 「OAuth 2.0認証」モーダルが表示され、Googleログインを行うポップアップ画面が表示されます。
  • OAuth同意画面の設定時「テストユーザー」に登録した Google アカウントを選択しログインを行います。
  • テストステータスのため「このアプリは Google で確認されていません」というアラートが表示されますが、続けて問題ないので「続行」をクリックします。
  • trocco.ioが Google アカウントへのアクセスを求めています」という表示に切り替わりますので、「続行」を押下します。
  • 「OAuth 2.0認証」モーダル上の表示が “認証成功” に変われば、認証は成功しています。
  • 最後に「保存」を押下して接続情報を保存します。

これで接続設定の作成は完了です。

データ取得のための転送設定の作成

それでは早速、先ほど作ったカスタムコネクタを利用して、Google Docs のドキュメントデータを取得してみます。

今回は、ドキュメントID, タイトル, 本文コンテンツを取得し、BigQueryへ転送する場合のケースを想定し解説を行います。

「データ転送」→ 「転送設定」をクリックし、「新規転送設定作成」ボタンを押します。

STEP0: 転送元・転送先の選択

転送元と転送先を選択する画面が表示されますので、転送元をクリック、カスタムコネクタを選択します。カスタムコネクタは「その他」のタブの中にあります。

転送先に Google BigQuery を指定します。

STEP1: 転送元・転送先の設定

先ほど作ったGoogle Docsの「カスタムコネクタ」、「カスタムコネクタ接続設定」、「取得対象」を選択します。

APIのレスポンスで取得できない documentId の値の転送も行いたいので、カラムマッピングで利用できるように、カスタム変数の定義をしておきます。

こうすることで、STEP2のカラムマッピング時に、新規でカラム追加を行い、その値としてカスタム変数に代入された値を埋め込んで転送先へ転送することが可能になります。

転送元の設定:

  • カスタムコネクタ: 作成した Google Docs のカスタムコネクタ
  • カスタム変数:
    • 変数名: $document_id$
    • データ型: 文字列
    • 値: Google DocsドキュメントのID(例:1a2B3C4D5E…)
  • 接続情報: 作成した Google Docs 接続設定
  • 取得対象: ドキュメント取得
  • パスパラメータ:
    • documentId: $document_id$
  • パラメータ:
    • fields: title,body(content)
    • カスタムコネクタ作成時に設定したデフォルト値のままでOK

ドキュメントIDの取得方法:

ドキュメントID は Google Docs ドキュメントのURLから取得できます。
形式:https://docs.google.com/document/d/{documentId}/edit?tab=0

転送先の設定(Google BigQuery):

転送先の設定は次のドキュメントを参照して設定してください。

STEP2: スキーママッピング

「次のSTEPへ」ボタンを押すと、スキーマのカラムマッピングが自動的に実行されます。

カスタムコネクタが正しく作成されていれば、データサンプルがプレビューに表示されます。

カラムの型推論とマッピング設定は自動的に行われますが、転送先のカラム名やデータ型はGUI上で任意に編集できます。

JSONカラムを展開する

Google Docsのbodyはそのままだと構造化されているため、テキスト情報だけを取得したいニーズがある場合は「JSONカラムを展開」機能を利用してカラムの展開を行う必要があります。

Google Docsのレスポンス例:

{
  "title": "Google Docs APIテスト用ドキュメント",
  "body": {
    "content": [
      {"paragraph": {"elements": [{"textRun": {"content": "サンプルテキストです"}}]}}
    ]
  }
}

今回は、ドキュメントID, タイトル, 本文コンテンツ のカラムを定義し、それを1行として転送を行いますので、以下のようなカラム定義を行います。

ドキュメントID:

  • 「カラムを追加」ボタンを押下し、カラムの一番上へ移動
  • カラム名:document_id
  • 元カラム:新規追加
  • データ型:string
  • デフォルト値:$document_id$

タイトル:

  • 自動データ設定で設定されたままの値でOK

本文コンテンツ:

body直下にあるcontent配列の中の paragraph > elements 配列配下の textRun > content フィールドの値を全て取得し、contentカラムへ格納することにしたいので、自動データ設定で定義されたbodyカラムの「JSONカラムを展開」にチェックを入れ、以下のように値を設定します。

  • カラム名:content
  • JSONパス:content[*].paragraph.elements[*].textRun.content
  • データ型:string

表コンテンツ:

表内のデータはJSON構造上で別の場所にあるので別カラムで取得します。

  • カラム名:table_content
  • JSONパス:content[*].table.tableRows[*].tableCells[*].content[*].paragraph.elements[*].textRun.content
  • データ型:string

ここまで設定したら画面下部またはデータプレビューの箇所にある変更をプレビューボタンを押下し、プレビューを更新します。

正常に設定されていたらデータプレビューは下記画像のように更新されます。

問題なければ「確認画面へ」を押下してSTEP3へ進みます。

STEP3: 設定の確認

設定内容に問題なければ「保存して適用」を押します。
これで転送設定の作成は完了です。

4. 転送ジョブの実行

それでは、作成した転送設定を利用し実際にデータを転送してみましょう。

作成した転送設定の画面の右上にある「実行」ボタンを押します。

ジョブの実行時に指定できる項目がありますが、今回は特に変更せず、そのまま実行をクリックしてください。

ジョブの実行ログ画面に切り替わり転送が開始されます。ジョブが正常終了するとステータスが「SUCCESS」に変更になります。

BigQueryのテーブルにGoogle Docsのデータが転送できました!
いかがでしょうか?

TROCCOのConnector Builderを利用すると、最小限の設定でAPI連携ができるカスタムコネクタの作成やデータの転送までできることがおわかりいただけたかと思います。

Google Docs API連携を活用したConnector Builderのユースケース

Google Docs APIは本文データ(段落・表・テキストなど)の取得に特化しており、内容解析や検索性の向上などに活用できます。興味があるものはぜひ一度実装をお試しください。

  • Google Docs上の議事録や商談メモの本文を自動取得し、BigQueryやスプレッドシートに蓄積
  • 文書内容をもとにキーワード抽出やカテゴリ分類を行い、ナレッジ検索や分析に活用
  • ドキュメント本文の更新内容を定期取得し、バージョンごとの差分やトピックの変化を可視化

ドキュメントの更新日時や版(リビジョン)を扱いたい場合は、Drive APIのメタ情報を併用すると効果的です。

両者を組み合わせることで、「どのドキュメントがいつ、どのように更新されたか」を可視化できます。

よくある質問(FAQ)

Q. ノーコードでカスタムコネクタを作成・運用できますか?

A. GUIで直感的にコネクタの作成ができますが、APIの仕組みやAccess Tokenなど認証についての理解といった基礎知識が必要となりますので、以下の記事もご参照ください。

非エンジニアでもわかる!Connector Builderを使うための3つのポイント

Q. 複数ドキュメントのデータを一括で取得できますか?

A. はい、複数ドキュメントのデータを一括で取得することは可能です。Docs API単体ではドキュメントID一覧が取得できないため、Drive APIでファイルリストを取得する必要があります。まず、ファイルリストを取得するエンドポイントを使ってドキュメント一覧を取得し、その後、各ドキュメントごとのコンテンツデータを取得することで対応できます。TROCCOのワークフロー機能を活用すれば、この一連の処理を自動化することも可能です。

Q. 取得したいファイル数が多い場合の対応はどうしたらいいですか?

A. Google Drive API の nextPageToken を利用し、カーソルベースのページネーション設定を行ってください。

まとめ

Connector Builderは、TROCCOの新機能として、コード不要のGUIコネクタを素早く作成し、DWH・クラウドアプリ・Googleスプレッドシートとの連携を設定ベースで構築できます。

作成したコネクタは再利用でき、専門的なAPI実装を前提とせず現場主導でデータ連携や運用自動化を進められるため、設計〜保守の負担を大幅に削減します。

公式コネクタ同等の性能・セキュリティに加え、ワークフロー/通知も利用可能で、内製に比べ低コストで導入できます。

無料トライアルで、その使いやすさをお試しください。

※Connector Builderは、TROCCOのAdvancedプラン以上でご利用いただけます。

primeNumber編集長

primeNumberのブログを担当している編集長