はじめに 💡
みなさん、日々のZoom Phoneの通話ログや着信履歴など、必要なデータを 「CSVダウンロードして手作業でエクセルまとめてる…」 なんてこと、ありませんか?
今回は、ノーコード/ローコードで Office 連携ができる Microsoft の RPA ツール「Power Automate」とZoom Phone APIを組み合わせて、通話ログの自動集計Botを作る事例を紹介します🐤
比較的簡単に取り込める仕組みなので、エンジニアもそうじゃない人も必見です!
Power Automate ってなに? 🤖
ざっくりいうと、Microsoft が提供している業務自動化プラットフォームで、「プログラミング知識ゼロ」でも使えるツールです。複雑なタスクや「他サービス同士の連携」も、画面上の“ドラッグ&ドロップ”だけでサクサク作れるのが特長。
公式の紹介ページはこちら
たとえば
- 「特定のメールが来たら自動でPDF保存」
- 「フォーム入力があればリーダーに即通知」
- 「外部サービスのデータを定期的に取得→Excelへ自動追記」
こんな“業務の自動化”が、GUIだけでできる…それがPower Automate!
ちょっとした面倒なルーチンワークから、API連携の本格自動化まで、ノーコードで現場改善できる“RPAツール” です!
参考記事:
Zoom Phone APIってなに? ☎️
Zoomの電話機能(Zoom Phone)で発生した
- 通話履歴
- 発着信イベント
などの情報を取得したり、コールキューや共有ラインの設定を変更したりといったZoom Phone に関わる様々な操作をAPI経由で実行できます。
必要なもの 📝
- Microsoft Power Automateアカウント
- Zoomアカウント(Zoom Phone APIであればZoom Phone契約必須)
- Zoom MarketplaceでAPI連携用のServer-to-Server OAuth App
- Excel Online(SharePoint or OneDriveに配置推奨)
やり方ガイド 🚀
1. Excel Onlineに「テーブル」を作る
まず、Excel Onlineでワークシートを作成した後、それをSharePointかOneDriveに保存します。さらに、そのままではPower Automateから見えないようなので、テーブルを作成します。
データを入れる範囲を選択→「テーブル」化
Insertメニューから、Tableを選択すると選択範囲がテーブル化されます。
必要に応じてヘッダに名前を入れておきましょう。
2. Power Automateで新しいフローを作成
次にいよいよPower Automateを起動します。
Copilotに丸投げもできるみたいですが、今日は一旦左メニューの + Create
からワークフローを作成しましょう。
お試しでまずは Instant flow を選択して(日時を決めて定期的に動かしたい場合は Scheduled cloud flow を選ぶと良いかと)
さらに、Manually trigger a flowを今回は選択してみます。
3. アクションの追加
最初に現れるのはこのようなカードだと思います。この下のプラスマークをクリックすると、左側にメニューが出てきます。今回はここから、HTTPアクションを選択してみましょう。
4. アクセストークンの取得
HTTPアクションを選択したら、次にZoom API用のアクセストークンを取得します。ここでは「Server to Server OAuthアプリ」をZoom Marketplaceで作成し、その情報を使ってトークンを発行します。
Server to Server OAuth やアクセストークンの取得方法については、こちらの記事を参考にしてください。
Power Automateでアクセストークンを取得する場合
HTTPアクションを追加し、上記の内容をPower Automateの「HTTP」アクションに落とし込みます。
Item | Content |
---|---|
URI | https://zoom.us/oauth/token |
Method | POST |
Headers | Authorization : (以下にて説明) |
Queries | grant_type : account_credentials account_id: YOUR_ACCOUNT_ID |
Authorization部分ですが、Basic
(半角スペースを忘れずに)と入力した後にスラッシュをタイプし、Insert expression
を選択します。表示されたポップアップに base64('CLIENT_ID:CLIENT_SECRET')
という形で入力し、Add
をクリックします。
こんな感じですね。一旦ここまででテストしてみましょう。右上のSaveをクリックした後、Testを実行すると、テスト完了後にリンクが表示されます。無事成功すると、アクセストークンが取得できていることがわかります。
📝 ワンポイント!
- トークンの有効期限は1時間なので、使う直前に毎回発行する運用がベスト
- アカウントやClient Secretの扱いには要注意
- Server to Server OAuthは「管理者権限」なので誤操作・過剰スコープには気を付けて!
5. APIの実行
同じような形でアクションを追加していき、必要な情報をAPI経由で取得します。
例えば以下のような形で、前述の手順で取得したアクセストークンを使ってリクエストすることが可能です。
6. エクセルへの転記
最後に、Excel Onlineのアクションメニューから、Add a row into a table
を選択し、必要な情報を必要な場所に入れるよう、仕込んでいきます。
詳細は省きますが、イメージはこんな感じです。例として、https://api.zoom.us/v2/phone/call_history
で取得したデータのcallee_name
を取得するなら、body('getCallHistory')?['Call_logs']?[0]?['callee_name']
という感じになります。
7. テスト結果の確認
改めてSaveしてTestしたら、Excel上にAPIで取れたデータが自動追記されてるか確認してみましょう!
こんな感じのデータが出力されていれば成功です。
コツ 🧪
- 手動トリガーでフローを回してみる
- Power Automateの「実行履歴」でエラー発生箇所をチェック
- Excelファイルに期待通りのデータが追加されてるか見る
- 必要に応じて出力内容やマッピングを微調整
よくあるトラブルと対処法 💥
試行錯誤が少し必要な部分もあるかと思われますが、ありそうなトラブルをまとめてみました。
現象 | 原因と対策 |
---|---|
テーブルが選べない | Excelを「テーブル化」していない |
Add a rowで「InvalidTemplate」エラー | JSONのキー名ミス/配列が空 |
HTTPアクションの出力が文字列でプロパティ取れない | Composeアクションを挟んであらかじめデータを準備しておく |
データがダブる・空になる | 書き込み範囲、カラム名、マッピングの見直し |
SharePoint/OneDriveで「編集できません」 | ファイルが他でロック中、権限不足、開きっぱなし |
応用編 🪄
- スケジュールトリガーで毎朝8時に自動集計✨
- メールやTeamsに通知も組み合わせ可能!
- 取得項目やフィルタの追加でカスタマイズも自由自在
- フローをテンプレ化して他の部署や用途にも展開
注意事項(大事)
今回の記事ではテスト目的のため、APIキーやシークレットをフロー内に直接記載して実行していますが、本番環境やチームで使う場合は「そのまま書くのはNG」なので、安全な方法で管理しましょう!
💡 APIキーやシークレットの管理について(一例)
- Azure Key VaultでAPIキーやパスワードを保管
- 必要な権限をPowerPlatformに付与
- Power Appsで “シークレット型”の環境変数 を作成(Key Vaultと連携)
- Power AutomateからDataverse経由で安全に取得して利用
こうすると「フロー内で直接値を書かずに」「管理者がローテーション・履歴管理」もできて安心です🙆♂️
📝 やり方の流れ(ざっくりイメージ)
- AzureポータルでKey Vaultを作成し、APIキーを「シークレット」として登録
- 権限設定で「Microsoft.PowerPlatform」に取得許可を与える
- Power Appsのソリューションで「シークレット型」の環境変数を作成しKey Vaultと紐付け
- Power AutomateでDataverseの「RetrieveEnvironmentVariableSecretValue」アクションで値を取得
- 取得した値をHTTPアクションのヘッダーやボディに動的にセット
詳しい手順や注意点は、公式ドキュメントや他の技術ブログを参考にしたり、
わからない部分はAIや検索で最新情報を調べてみてください!
おわりに 🍀
これであなたも「手作業ログ集計」卒業!
ローコードなのに業務効率化、おすすめです🦄✨