Slack BotとGoogle Sheets連携アプリケーション
-
基本的なSlack Bot機能
- 「こんにちは」メッセージへの応答
- ボタンクリックイベントの処理
-
Google Sheets部分一致検索機能
- ボットにメンションすると、指定されたGoogle Spreadsheetでテキストを検索
- 検索対象: "I want to use free software / フリーソフトを利用したい のコピー"
- 検索範囲: 4行目以降の1列目のみ(ヘッダー行を除外)
- 検索タイプ: 部分一致検索のみ
- 入力したテキストを含むセルを検索
- 大文字小文字は区別しません
- 検索結果には位置情報を表示
- 上位3件の結果を詳細表示
-
ソフトウェア調査機能(ChatGPT API連携)
- 検索で見つからなかった場合、ChatGPT APIを使用してソフトウェア情報を自動調査
- 調査項目:
- カテゴリ(ソフトウェアの種類)
- 公式ダウンロードページ
- 対応プラットフォーム(OS)
- セキュリティ上の注意点
- 企業での無料利用可否
- その他特記事項
- 調査結果をスプレッドシートへの追加提案として提示
- Remarks列に「承認待ち」として記録
- 最終的な承認は人間が判断
pip install -r requirements.txt$env:SLACK_BOT_TOKEN="xoxb-XXXXX"
$env:SLACK_APP_TOKEN="xapp-YYYYY"
$env:OPENAI_API_KEY="sk-ZZZZZ"
$env:GOOGLE_CREDENTIALS_PATH="google_service_account.json"- Google Cloud Platformのサービスアカウント認証情報JSONファイルが必要です
- デフォルトファイル名:
google_service_account.json - 環境変数
GOOGLE_CREDENTIALS_PATHで別のパスを指定可能 - このサービスアカウントは対象のGoogle Spreadsheetへのアクセス権限が必要です
- 認証情報ファイルは
.gitignoreに追加してGitHubにコミットしないでください - ファイル名は汎用的な名称を使用し、プロジェクト固有の情報を含めないでください
- OpenAI APIキーが必要です
- ソフトウェア調査機能で使用されます
- 環境変数
OPENAI_API_KEYに設定してください
企業環境でNetskopeなどのセキュリティソフトウェアが通信を阻害する場合:
- Netskopeクライアントを一時的に無効化
- 管理者権限でセキュリティソフトを一時停止
-
プロキシ設定の追加(環境変数で設定可能):
$env:HTTP_PROXY="http://proxy.company.com:8080" $env:HTTPS_PROXY="http://proxy.company.com:8080"
-
IT部門への申請:
- Google APIs(googleapis.com)へのアクセス許可申請
- OAuth2エンドポイント(oauth2.googleapis.com)への許可申請
-
証明書の追加:
- 企業の内部証明書をPythonの証明書ストアに追加
.gitignore に .vscode/ を追加しておいて、.vscode/launch.json に書いておくと良い。
"env": {
"SLACK_BOT_TOKEN": "xoxb-XXXXX",
"SLACK_APP_TOKEN": "xapp-YYYYY"
}python app.pypython test_sheets.pyapp.py: メインのSlack Botアプリケーション(高度な検索機能統合済み)google_sheets_handler.py: Google Sheets操作を担当するモジュール(基本版)google_sheets_handler_proxy.py: Google Sheets操作を担当するモジュール(プロキシ対応版)google_sheets_handler_advanced.py: Google Sheets操作を担当するモジュール(高度な検索機能付き)test_sheets.py: Google Sheets検索機能のテストスクリプト(基本版)test_proxy.py: Google Sheets検索機能のテストスクリプト(プロキシ対応版)test_advanced_search.py: 高度な検索機能のテストスクリプトdebug_test.py: 詳細なデバッグ情報付きテストスクリプトrequirements.txt: 依存関係の定義.vscode/boltslacktest-wang-40b68186e2db.json: Google Sheets APIの認証情報
-
完全一致検索 (exact)
- 入力したテキストと完全に一致するセルを検索
- 大文字小文字は区別しません
- スコア: 100
-
部分一致検索 (partial)
- 入力したテキストを含むセルを検索
- 「フリー」で検索すると「フリーソフト」も見つかります
- スコア: 90
-
あいまい検索 (fuzzy)
- 類似度を使用して関連するテキストを検索
- タイプミスや表記ゆれにも対応
- スコア: 70-100(類似度による)
# 高度な検索機能のテスト
python test_advanced_search.py
# 基本検索機能のテスト
python test_sheets.py
# プロキシ対応版のテスト
python test_proxy.py企業環境でセキュリティソフトウェアが通信を阻害する場合は、プロキシ対応版を使用してください:
-
環境変数でプロキシを設定:
$env:HTTP_PROXY="http://proxy.company.com:8080" $env:HTTPS_PROXY="http://proxy.company.com:8080"
-
プロキシ対応版のテスト実行:
python test_proxy.py
-
app.pyでプロキシ対応版を使用する場合:
app.pyの import 文を以下のように変更:from google_sheets_handler_proxy import search_in_target_spreadsheet_proxy as search_in_target_spreadsheet
Slackでボットをメンションして検索したいテキストを送信:
@bot フリーソフト
ボットが応答(部分一致検索、4行目以降のみ):
「フリーソフト」の検索結果:
'フリーソフト'の検索結果: 3件見つかりました
1. ・フリーソフトウェアの利用申請は、Slack チャンネル #a-software にて受け付けます。
位置: 行5, 列1
2. ・利用を許可した場合、該当のフリーソフトウェアを OKリスト に追加してください。
位置: 行6, 列1
3. ・利用を許可できない場合、該当のフリーソフトウェアを NGリスト に記載してください。
位置: 行7, 列1
@bot Slack
→ 部分一致検索で「Slack」を含むテキストを検索(4行目以降のみ)
@bot ソフト
→ 部分一致検索で「ソフト」を含むテキストを検索(4行目以降のみ)
検索で見つからないソフトウェアをメンションした場合:
@bot Visual Studio Code
ボットが応答(ソフトウェア調査結果):
「Visual Studio Code」は見つかりませんでした。調査を開始します...
「Visual Studio Code」の調査結果:
📋 カテゴリ: コードエディタ・統合開発環境
🌐 ダウンロードページ: https://code.visualstudio.com/
💻 プラットフォーム: Windows, Mac, Linux
🏢 商用利用: 可能(無料)
📝 備考: 承認待ち - Microsoft製の軽量で高機能なコードエディタ
⚠️ 特記事項: オープンソース、豊富な拡張機能
✅ この情報をリストに追加することを提案します。
管理者による最終承認が必要です。
# 部分一致検索のテスト(4行目以降のみ)
python test_partial_search.py
# ソフトウェア調査機能のテスト
python test_software_research.pysoftware_research.py: ソフトウェア調査機能を担当するモジュール(ChatGPT API連携)test_software_research.py: ソフトウェア調査機能のテストスクリプト