0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Qiita初投稿のため、
おかしな点は優しい目で見てください。

毎日手作業で実施していた
「CSVファイルのデータをTeamsに投稿する作業」を自動化するシステムを構築した。

Excelで管理しているメンテナンス依頼データ(CSV形式)を読み込み、
担当部署ごとにフィルターしてMicrosoft Teamsに自動投稿するシステムである。

webhookについて

**Webhook(ウェブフック)**とは、URLにデータを送信するだけで
自動的に処理を実行してくれる仕組みである。

今回のシステムでは、Power AutomateのWebhookを使用した。

Pythonプログラム → プロキシ経由 → Power Automate → Teams

なぜWebhookを使ったのか

最初は以下の方法を試したが、会社のセキュリティポリシーにより使用できなかった:

  • Teams API直接接続 - 会社のファイアウォールでブロック
  • SharePoint API - 権限不足で使用不可
  • Power Automate + SharePoint - DLPポリシーに違反

Power AutomateのWebhookであれば、外部からのHTTPリクエストを受け取り、
Teamsに投稿する処理を実行できるため、セキュリティポリシーに違反しない。

PythonからTeamsに送る手順

1. Power Automateでフローを作成

  1. Power Automateで「HTTP要求の受信時」トリガーを使用
  2. Webhook URLを取得
  3. Teamsにメッセージを投稿するアクションを追加

2. Pythonプログラムの実装

(ここは全部AIに丸投げしました)

import requests
import json

# プロキシ設定
proxies = {
    'http': 'http://1...',
    'https': 'http://1...',
}

# Webhook URL
webhook_url = 'https://...'

# メッセージを送信
message = {
    "attachments": [
        {
            "contentType": "application/vnd.microsoft.card.adaptive",
            "content": {
                "type": "AdaptiveCard",
                "version": "1.5",
                "body": [...]
            }
        }
    ]
}

response = requests.post(
    url=webhook_url,
    data=json.dumps(message),
    headers={'Content-Type': 'application/json'},
    proxies=proxies
)

3. CSVデータの処理

  1. CSVファイル読み込み

    • Pythonのcsvライブラリを使用
    • encoding='utf-8-sig'でBOM除去
  2. アダプティブカード形式で投稿

    • 表形式で見やすく表示

プロキシに引っ掛かる

問題

最初は何を試しても接続できなかった。すべての外部サイトへの接続が失敗していた。

原因

会社のネットワークでは、プロキシサーバー経由での接続が必要だった。

プロキシサーバーとは、会社のネットワークから
インターネットに接続する際の「門番」のような役割を果たすサーバーである。

解決方法

  1. proxy.pacファイルを確認

    • 会社のプロキシ設定ファイル(proxy.pac)を取得
    • 実際のプロキシサーバーのアドレスを特定
  2. プロキシ設定を追加

    proxies = {
        'http': 'http://1...',
        'https': 'http://1...',
    }
    
  3. requestsライブラリにてプロキシ経由で接続

    response = requests.post(url, proxies=proxies, ...)
    

これにより、会社のネットワークからでも外部のサービスへ接続できるようになった。
(ここも全部AIに丸投げして作成していt…)

完成

最終的な機能

  • ✅ CSVファイルを自動読み込み
  • ✅ PythonからWebhook使用でTeams投稿

まとめ

企業環境での制約を乗り越え、Power AutomateのWebhookを活用することで
実用的な自動化システムを構築できた。

最初は「会社のセキュリティが厳しくて、何もできないのではないか」と考えていたが
試行錯誤を繰り返すことで、必ず解決策が見つかることを実感した。

一市民開発の民でもAIフル活用で
ここまでサクッと作成できることに時代の変化を感じますね…

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?