概要
Microsoft 365コネクタは、Microsoft 365サービス(OneDrive、OneNote、Teams、SharePoint)からデータを取得して Fess のインデックスに登録する機能を提供します。
この機能には fess-ds-microsoft365 プラグインが必要です。
対応サービス
OneDrive: ユーザードライブ、グループドライブ、共有ドキュメント
OneNote: ノートブック(サイト、ユーザー、グループ)
Teams: チャネル、メッセージ、チャット
SharePoint Document Libraries: ドキュメントライブラリメタデータ
SharePoint Lists: リストとリストアイテム
SharePoint Pages: サイトページ、ニュース記事
前提条件
プラグインのインストールが必要です
Azure ADアプリケーション登録が必要です
Microsoft Graph API権限の設定と管理者同意が必要です
Java 21以上、Fess 15.2.0以上
プラグインのインストール
方法1: JARファイルを直接配置
方法2: ソースからビルド
インストール後、Fess を再起動してください。
設定方法
管理画面から「クローラー」→「データストア」→「新規作成」で設定します。
基本設定
| 項目 | 設定例 |
|---|---|
| 名前 | Microsoft 365 OneDrive |
| ハンドラ名 | OneDriveDataStore / OneNoteDataStore / TeamsDataStore / SharePointDocLibDataStore / SharePointListDataStore / SharePointPageDataStore |
| 有効 | オン |
パラメーター設定(共通)
共通パラメーター一覧
Azure ADアプリケーション登録
1. Azure Portalでアプリケーションを登録
https://portal.azure.com でAzure Active Directoryを開く:
「アプリの登録」→「新規登録」をクリック
アプリケーション名を入力
サポートされているアカウントの種類を選択
「登録」をクリック
2. クライアントシークレットの作成
「証明書とシークレット」で:
「新しいクライアントシークレット」をクリック
説明と有効期限を設定
シークレット値をコピー(後で確認できないので注意)
3. API権限の追加
「APIのアクセス許可」で:
「アクセス許可の追加」をクリック
「Microsoft Graph」を選択
「アプリケーションの許可」を選択
必要な権限を追加(下記参照)
「管理者の同意を与えます」をクリック
データストア別の必要な権限
OneDriveDataStore
必須権限:
Files.Read.All
条件付き権限:
User.Read.All- user_drive_crawler=true の場合Group.Read.All- group_drive_crawler=true の場合Sites.Read.All- shared_documents_drive_crawler=true の場合
OneNoteDataStore
必須権限:
Notes.Read.All
条件付き権限:
User.Read.All- user_note_crawler=true の場合Group.Read.All- group_note_crawler=true の場合Sites.Read.All- site_note_crawler=true の場合
TeamsDataStore
必須権限:
Team.ReadBasic.AllGroup.Read.AllChannel.ReadBasic.AllChannelMessage.Read.AllChannelMember.Read.AllUser.Read.All
条件付き権限:
Chat.Read.All- chat_id を指定する場合Files.Read.All- append_attachment=true の場合
スクリプト設定
OneDrive
利用可能なフィールド:
file.name- ファイル名file.description- ファイルの説明file.contents- テキストコンテンツfile.mimetype- MIMEタイプfile.filetype- ファイルタイプfile.created- 作成日時file.last_modified- 最終更新日時file.size- ファイルサイズfile.web_url- ブラウザで開くURLfile.url- ファイルURLfile.id- ドライブアイテムIDfile.parent_path- 親フォルダのパスfile.roles- アクセス権限
OneNote
利用可能なフィールド:
notebook.name- ノートブック名notebook.contents- セクションとページの統合コンテンツnotebook.size- コンテンツサイズ(文字数)notebook.created- 作成日時notebook.last_modified- 最終更新日時notebook.web_url- ブラウザで開くURLnotebook.roles- アクセス権限
Teams
利用可能なフィールド:
message.title- メッセージタイトルmessage.content- メッセージコンテンツmessage.created_date_time- 作成日時message.last_modified_date_time- 最終更新日時message.web_url- ブラウザで開くURLmessage.roles- アクセス権限message.from- 送信者情報message.subject- メッセージ件名message.importance- 重要度message.team- チーム情報message.channel- チャネル情報
データストア別の追加パラメーター
OneDrive
OneNote
Teams
SharePoint Document Libraries
SharePoint Lists
SharePoint Pages
使用例
OneDrive全ドライブのクロール
パラメーター:
スクリプト:
特定チームのTeamsメッセージをクロール
パラメーター:
スクリプト:
トラブルシューティング
認証エラー
症状: Authentication failed または Insufficient privileges
確認事項:
テナントID、クライアントID、クライアントシークレットが正しいか確認
Azure Portalで必要なAPI権限が付与されているか確認
管理者の同意が与えられているか確認
クライアントシークレットの有効期限を確認
APIレート制限エラー
症状: 429 Too Many Requests
解決方法:
number_of_threadsを減らす(1または2に設定)クロール間隔を長くする
ignore_error=trueを設定して継続処理
データが取得できない
症状: クロールは成功するがドキュメントが0件
確認事項:
対象のデータが存在するか確認
API権限が正しく設定されているか確認
ユーザー/グループドライブクローラーの設定を確認
ログでエラーメッセージを確認
大量データのクロール
解決方法:
複数のデータストアに分割(サイト単位、ドライブ単位など)
スケジュール設定で負荷分散
number_of_threadsを調整して並列処理特定のフォルダ/サイトのみをクロール
参考情報
データストアコネクタの概要 - データストアコネクタ概要
Google Workspaceコネクタ - Google Workspaceコネクタ
データストアクロール - データストア設定ガイド