「毎日たまる大量のファイル、どうやって整理したらいいのかわからない…」そんな悩みを解決するのが、Power Automate DesktopとChatGPTを組み合わせた自動分類の方法です。この記事では、初心者でも簡単に実践できるよう、ひとつひとつのアクションを具体的に解説します。これを読めば、誰でもフォルダの中身をスッキリ整理できる環境が作れます!
準備: 事前に必要なもの
作業を進める前に、以下の準備をしておきましょう。
- Power Automate Desktop(インストール済み)
- OpenAIのChatGPT APIキー
ChatGPTを使うにはAPIキーが必要です。OpenAI公式サイトで登録して取得してください。 - 整理したいファイルを格納したフォルダ
作業対象のフォルダを用意しておきましょう(例: C:\Users\あなたの名前\Documents\整理対象フォルダ)。
ステップ1: Power Automate Desktopでファイルをスキャン
Power Automate Desktopで、フォルダ内のファイルを取得する方法を丁寧に解説します。
① 新しいデスクトップフローを作成
- Power Automate Desktopを開き、「+ 新しいフロー」をクリックします。
- フローの名前を入力します(例: 「ファイル整理フロー」)。
- 「作成」をクリックして新しいフローを開きます。
② 「フォルダ内のファイルを取得」アクションを設定
このアクションで、整理対象フォルダ内のすべてのファイルを取得します。
- 左側の「アクション」パネルから「フォルダ内のファイルを取得」を探します。
検索バーに「フォルダ」と入力すると見つけやすいです。 - 「フォルダ内のファイルを取得」をフロー内にドラッグ&ドロップします。
- プロパティ設定画面で以下を入力します:
- フォルダパス: 整理したいフォルダの場所を指定します(例:
C:\Users\あなたの名前\Documents\整理対象フォルダ)。右側の「フォルダを参照」ボタンを押して選ぶことも可能です。 - その他の設定はデフォルトのままでOKです。
- フォルダパス: 整理したいフォルダの場所を指定します(例:
- 設定が終わったら、「保存」をクリックします。
③ 「ループを繰り返す」でファイルを1つずつ処理
取得したファイルを順番に処理するため、ループ処理を追加します。
- 「ループを繰り返す」アクションを左側の「アクション」パネルからドラッグ&ドロップします。
- 「ループ」のプロパティ設定で以下を入力します:
- 反復対象: 「フォルダ内のファイルを取得」アクションで作成された
Files変数を選択します。
- 反復対象: 「フォルダ内のファイルを取得」アクションで作成された
- 「保存」をクリックします。これでフォルダ内のファイルを順番に処理する準備が整いました。
ステップ2: ファイル内容をChatGPTに送信して解析
次に、取得したファイルの内容をChatGPTに送信して分類名を取得する設定を行います。
① 「ファイルを読み取る」アクションを追加
ファイルの内容をテキストとして読み取ります。
- 「ファイルを読み取る」アクションを左側の「アクション」パネルから探し、ドラッグ&ドロップします。
- プロパティ設定画面で以下を入力します:
- ファイルパス: 「ループを繰り返す」内の変数
CurrentItemを指定します(現在処理中のファイル)。
- ファイルパス: 「ループを繰り返す」内の変数
- 「保存」をクリックします。これで、現在のファイル内容がテキストとして読み取られます。
② ChatGPT APIに内容を送信
ChatGPTにファイル内容を送信して解析結果を取得します。
- 「HTTPリクエストを送信」アクションを左側の「アクション」パネルから探し、ドラッグ&ドロップします。
- プロパティ設定画面で以下を入力します:
- メソッド:
POSTを選択。 - URL:
https://api.openai.com/v1/completionsを入力。 - ヘッダー:
以下の項目を入力します(+ボタンを押して追加します)。- キー:
Authorization、値:Bearer あなたのAPIキー
※APIキーの値は、OpenAIで取得したものを使います。 - キー:
Content-Type、値:application/json
- キー:
- 本文: 以下をそのままコピー&ペーストします(
[読み取ったファイルの内容]の部分は変数を挿入):jsonコードをコピーする{ "model": "gpt-4", "prompt": "以下の内容を分析して、適切な分類名を教えてください。\n\n[読み取ったファイルの内容]", "max_tokens": 100 } - 本文内の設定:
[読み取ったファイルの内容]の部分に「ファイルを読み取る」アクションで作成されたテキスト変数を挿入します(例:FileContents)。
- メソッド:
- 「保存」をクリックします。これでChatGPTにファイル内容が送信され、分類名が返されるようになります。
③ ChatGPTの結果を保存
ChatGPTから返された結果を新しい変数に保存します。
- 「HTTPリクエストを送信」アクションの出力設定で、レスポンスボディを変数に保存します(例:
ClassificationResult)。
ステップ3: ファイルを分類して移動
最後に、ChatGPTの分類結果に基づいてファイルを自動的にフォルダに振り分けます。
① 「条件分岐」で分類を判定
ChatGPTの結果を元に、振り分け先フォルダを決めます。
- 「条件分岐」アクションを追加し、以下を設定します:
- 条件: 例として、
ClassificationResultが「契約書」を含む場合。- 条件式:
ClassificationResult.Contains("契約書")
- 条件式:
- 条件が一致した場合: ファイルを「契約書」フォルダに移動。
- 条件が一致しない場合: 次の条件分岐で別の分類を判定(例: 「請求書」)。
- 条件: 例として、
② 「ファイルを移動」アクションでファイルを移動
判定後の条件に基づいてファイルを移動します。
- 「ファイルを移動」アクションを追加。
- プロパティ設定で以下を入力:
- 現在のファイルパス: 「ループを繰り返す」内の変数
CurrentItem。 - 移動先フォルダ: 例として「契約書」のフォルダパス(例:
C:\Documents\契約書)。
- 現在のファイルパス: 「ループを繰り返す」内の変数
よくある質問 (FAQ)
Q1. ファイル内容を読み取れない場合はどうしたらいいですか?
PDFなど一部のファイル形式は、専用のアクション(例: 「PDFファイルのテキストを抽出」)を使って内容を取得する必要があります。形式に合わせたアクションを選びましょう。
Q2. ChatGPTの分類が間違っている場合はどうすればいいですか?
プロンプトの内容を工夫すると精度が向上します。たとえば、「分類名は具体的に答えてください」と指示を加えることで、結果が明確になることがあります。
Q3. ファイルが多すぎる場合でも動作しますか?
大量のファイルにも対応可能ですが、ChatGPT APIにはリクエスト制限があるため、一度に処理するファイル数を調整するか、API利用状況を確認してください。
