概要
Google Workspaceコネクタは、Google Drive(旧G Suite)からファイルを取得して Fess のインデックスに登録する機能を提供します。
この機能には fess-ds-gsuite プラグインが必要です。
対応サービス
Google Drive(マイドライブ、共有ドライブ)
Googleドキュメント、スプレッドシート、スライド、フォームなど
前提条件
プラグインのインストールが必要です
Google Cloud Platformプロジェクトの作成が必要です
サービスアカウントの作成と認証情報の取得が必要です
Google Workspace Domain全体への委任設定が必要です
プラグインのインストール
方法1: JARファイルを直接配置
# Maven Centralからダウンロード
wget https://repo1.maven.org/maven2/org/codelibs/fess/fess-ds-gsuite/X.X.X/fess-ds-gsuite-X.X.X.jar
# 配置
cp fess-ds-gsuite-X.X.X.jar $FESS_HOME/app/WEB-INF/lib/
# または
cp fess-ds-gsuite-X.X.X.jar /usr/share/fess/app/WEB-INF/lib/
方法2: 管理画面からインストール
「システム」→「プラグイン」を開く
JARファイルをアップロード
Fess を再起動
設定方法
管理画面から「クローラー」→「データストア」→「新規作成」で設定します。
基本設定
| 項目 | 設定例 |
|---|---|
| 名前 | Company Google Drive |
| ハンドラ名 | GSuiteDataStore |
| 有効 | オン |
パラメーター設定
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
private_key_id=46812a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r
client_email=fess-crawler@your-project.iam.gserviceaccount.com
パラメーター一覧
| パラメーター | 必須 | 説明 |
|---|---|---|
private_key | はい | サービスアカウントの秘密鍵(PEM形式、改行は \n) |
private_key_id | はい | 秘密鍵のID |
client_email | はい | サービスアカウントのメールアドレス |
スクリプト設定
title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created_time
last_modified=file.modified_time
url=file.url
thumbnail=file.thumbnail_link
content_length=file.size
filetype=file.filetype
role=file.roles
filename=file.name
利用可能なフィールド
| フィールド | 説明 |
|---|---|
file.name | ファイル名 |
file.description | ファイルの説明 |
file.contents | ファイルのテキストコンテンツ |
file.mimetype | ファイルのMIMEタイプ |
file.filetype | ファイルタイプ |
file.created_time | 作成日時 |
file.modified_time | 最終更新日時 |
file.web_view_link | ブラウザで開くリンク |
file.url | ファイルのURL |
file.thumbnail_link | サムネイルリンク(短期間有効) |
file.size | ファイルサイズ(バイト) |
file.roles | アクセス権限 |
詳細は Google Drive Files API を参照してください。
Google Cloud Platform設定
1. プロジェクトの作成
https://console.cloud.google.com/ にアクセス:
新しいプロジェクトを作成
プロジェクト名を入力
組織とロケーションを選択
2. Google Drive APIの有効化
「APIとサービス」→「ライブラリ」で:
「Google Drive API」を検索
「有効にする」をクリック
3. サービスアカウントの作成
「APIとサービス」→「認証情報」で:
「認証情報を作成」→「サービスアカウント」を選択
サービスアカウント名を入力(例: fess-crawler)
「作成して続行」をクリック
ロールは設定不要(スキップ)
「完了」をクリック
4. サービスアカウントキーの作成
作成したサービスアカウントで:
サービスアカウントをクリック
「キー」タブを開く
「鍵を追加」→「新しい鍵を作成」
JSON形式を選択
ダウンロードされたJSONファイルを保存
5. Domain全体への委任を有効化
サービスアカウントの設定で:
「Domain全体への委任を有効にする」にチェック
「保存」をクリック
「OAuth 2 クライアントID」をコピー
6. Google Workspace管理コンソールで承認
https://admin.google.com/ にアクセス:
「セキュリティ」→「アクセスとデータ管理」→「APIの制御」を開く
「Domain全体への委任」を選択
「新しく追加」をクリック
クライアントIDを入力
OAuth スコープを入力:
https://www.googleapis.com/auth/drive.readonly
「承認」をクリック
認証情報の設定
JSONファイルから情報を取得
ダウンロードしたJSONファイル:
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "46812a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgk...\n-----END PRIVATE KEY-----\n",
"client_email": "fess-crawler@your-project.iam.gserviceaccount.com",
"client_id": "123456789012345678901",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/..."
}
以下の情報をパラメーターに設定:
private_key_id→private_key_idprivate_key→private_key(改行はそのまま\n)client_email→client_email
秘密鍵の形式
private_key は改行を \n で保持します:
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG...\n-----END PRIVATE KEY-----\n
使用例
Google Drive全体のクロール
パラメーター:
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
private_key_id=46812a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r
client_email=fess-crawler@your-project-123456.iam.gserviceaccount.com
スクリプト:
title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created_time
last_modified=file.modified_time
url=file.web_view_link
thumbnail=file.thumbnail_link
content_length=file.size
filetype=file.filetype
filename=file.name
権限付きクロール
パラメーター:
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
private_key_id=46812a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r
client_email=fess-crawler@your-project-123456.iam.gserviceaccount.com
default_permissions={role}drive-users
スクリプト:
title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created_time
last_modified=file.modified_time
url=file.web_view_link
role=file.roles
filename=file.name
特定のファイルタイプのみクロール
Googleドキュメントのみ:
if (file.mimetype == "application/vnd.google-apps.document") {
title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created_time
last_modified=file.modified_time
url=file.web_view_link
}
トラブルシューティング
認証エラー
症状: 401 Unauthorized または 403 Forbidden
確認事項:
サービスアカウントの認証情報が正しいか確認:
private_keyの改行が\nになっているかprivate_key_idが正しいかclient_emailが正しいか
Google Drive APIが有効になっているか確認
Domain全体への委任が設定されているか確認
Google Workspace管理コンソールで承認されているか確認
OAuth スコープが正しいか確認(
https://www.googleapis.com/auth/drive.readonly)
Domain全体への委任エラー
症状: Not Authorized to access this resource/api
解決方法:
Google Workspace管理コンソールで承認を確認:
クライアントIDが正しく登録されているか
OAuth スコープが正しいか(
https://www.googleapis.com/auth/drive.readonly)
サービスアカウントでDomain全体への委任が有効になっているか確認
ファイルが取得できない
症状: クロールは成功するがファイルが0件
確認事項:
Google Driveにファイルが存在するか確認
サービスアカウントに読み取り権限があるか確認
Domain全体への委任が正しく設定されているか確認
対象ユーザーのDriveにアクセス可能か確認
APIクォータエラー
症状: 403 Rate Limit Exceeded または 429 Too Many Requests
解決方法:
Google Cloud Platformでクォータを確認
クロール間隔を長くする
必要に応じてクォータの増加をリクエスト
秘密鍵のフォーマットエラー
症状: Invalid private key format
解決方法:
改行が正しく \n になっているか確認:
# 正しい
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
# 間違い(実際の改行が含まれている)
private_key=-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQE...
-----END PRIVATE KEY-----
共有ドライブのクロール
注釈
サービスアカウントで共有ドライブをクロールする場合、 共有ドライブにサービスアカウントをメンバーとして追加する必要があります。
Google Driveで共有ドライブを開く
「メンバーを管理」をクリック
サービスアカウントのメールアドレスを追加
権限レベルを「閲覧者」に設定
大量のファイルがある場合
症状: クロールに時間がかかる、またはタイムアウトする
解決方法:
データストアを複数に分割
スケジュール設定で負荷を分散
クロール間隔を調整
特定のフォルダのみをクロール
権限とアクセス制御
Google Driveの共有権限を反映
Google Driveの共有設定をFessの権限に反映:
パラメーター:
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
private_key_id=46812a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q9r
client_email=fess-crawler@your-project-123456.iam.gserviceaccount.com
default_permissions={role}drive-users
スクリプト:
title=file.name
content=file.description + "\n" + file.contents
role=file.roles
mimetype=file.mimetype
created=file.created_time
last_modified=file.modified_time
url=file.web_view_link
file.roles にGoogle Driveの共有情報が含まれます。
参考情報
データストアコネクタの概要 - データストアコネクタ概要
Microsoft 365コネクタ - Microsoft 365コネクタ
Boxコネクタ - Boxコネクタ
データストアクロール - データストア設定ガイド