【Outlook】Office Scriptsで受信トレイの定期レポートを作る手順

【Outlook】Office Scriptsで受信トレイの定期レポートを作る手順
🛡️ 超解決

Microsoft Outlookの受信トレイには日々大量のメールが届きます。その中から重要なメールを見つけたり、特定の条件に合うメールを把握したりするのは骨が折れる作業です。特に、日々の業務報告や進捗確認のために、受信メールのサマリーを定期的に作成したいというニーズは多いでしょう。

しかし、Outlookの標準機能だけでは、受信メールの件数や送信者、件名などを自動で集計・レポート化することは困難です。そこで本記事では、Microsoft 365の機能であるOffice Scriptsを活用し、Outlookの受信トレイから定期的なレポートを作成する手順を解説します。この方法を使えば、手作業による集計の手間を省き、業務効率を大幅に向上させることができます。

【要点】Office ScriptsでOutlook受信トレイの定期レポートを作成する

  • Office Scriptsの概要と活用方法: Outlookのメールデータを自動処理し、レポートを作成する仕組みを理解する。
  • スクリプトの作成と設定手順: Outlook Web版でOffice Scriptsエディタを開き、受信トレイを分析するコードを記述・保存する。
  • 自動実行の設定: Power Automateを利用して、作成したOffice Scriptsを毎日決まった時間に実行させる方法を学ぶ。

ADVERTISEMENT

Office ScriptsとOutlook連携の仕組み

Office Scriptsは、ExcelなどのMicrosoft 365アプリケーションで、定型作業を自動化するためのJavaScriptベースのスクリプト機能です。Outlook自体に直接スクリプトを記述する機能はありませんが、Office ScriptsはOutlookのデータにアクセスし、処理を行うことが可能です。これは、OutlookのデータがExchange Online上に保存されており、Office ScriptsがそのExchange Onlineと連携できるためです。

具体的には、Outlookのメールアイテム(メールそのもの)にアクセスし、未読メールの件数、特定の送信者からのメール数、件名に含まれるキーワードの数などを取得できます。これらの情報を集計し、Excelファイルに書き出したり、メールで通知したりといった自動化が実現します。この自動化には、Microsoft Power Automateも併用することが一般的です。Power Automateは、様々なMicrosoft 365サービスを連携させ、ワークフローを構築するサービスであり、Office Scriptsをトリガーして実行させることができます。

お探しの解決策が見つからない場合は、こちらの「Teams/Outlookトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

Outlook受信トレイ分析スクリプトの作成手順

ここでは、Outlookの受信トレイにある未読メールの件数と、特定の送信者(例: “support@example.com”)からのメール件数をカウントするOffice Scriptsを作成します。このスクリプトはOutlook Web版からアクセスして記述します。新しいTeams(v2)や新しいOutlookでは、Web版のインターフェースが若干異なる場合がありますが、Office Scriptsへのアクセス方法は概ね共通です。

Office Scriptsエディタへのアクセス

まず、Office Scriptsを利用するために、Microsoft 365のライセンスが必要です。一般的には、Business Standard、Business Premium、E3、E5などのライセンスに含まれています。スクリプトの作成は、Web版のExcelから行います。

  1. Web版Excelを開く
    ブラウザでExcel Onlineにアクセスし、任意のブックを開きます。
  2. 「自動化」タブを選択
    Excelのメニューバーにある「自動化」タブをクリックします。
  3. 「すべてのスクリプト」をクリック
    「自動化」タブ内にある「すべてのスクリプト」ボタンをクリックします。
  4. 「新しいスクリプト」を作成
    表示される「スクリプト」ウィンドウで、「新しいスクリプト」ボタンをクリックします。これにより、Office Scriptsエディタが開かれます。

受信トレイ分析スクリプトの記述

Office Scriptsエディタが開いたら、以下のコードを記述します。このコードは、Outlookの受信トレイから未読メールの件数と、指定した送信者からのメール件数を取得します。コード内の “support@example.com” の部分は、必要に応じて実際のメールアドレスに変更してください。

注意: Outlookのデータにアクセスするには、Exchange Onlineの権限が必要です。通常、組織のIT管理者によって設定されています。もしスクリプトがOutlookデータにアクセスできない場合は、管理者に確認してください。

function main(workbook: ExcelScript.Workbook) {
  // OutlookのメールボックスにアクセスするためのAPIを呼び出す
  // この部分は、Office Scriptsが直接Outlook APIを呼び出すのではなく、
  // Power Automateなどの外部サービスと連携して実現されることが多いです。
  // ここでは、概念的なコードを示し、実際の連携はPower Automateで行います。

  // 仮のデータとして、未読メール数と特定送信者からのメール数を取得したとします。
  // 実際には、Office ScriptsのOutlook連携機能や、
  // Microsoft Graph APIなどを介してこれらの情報を取得します。
  
  // 例: 未読メールの件数を取得
  let unreadMailCount = 0;
  // 例: 特定送信者 (support@example.com) からのメール件数を取得
  let specificSenderMailCount = 0;

  // ここに、Outlookからメールデータを取得し、カウントするロジックを記述します。
  // Office Scriptsは直接OutlookのAPIを叩く機能を持っていませんが、
  // Power Automate経由でMicrosoft Graph APIを利用することで実現可能です。
  // そのため、このスクリプト自体は、Power Automateから渡されたデータを受け取るか、
  // Power AutomateがGraph APIで取得した結果をExcelに書き込む、という形が一般的です。

  // 今回は、Power Automateが取得した結果をExcelに書き込むことを想定し、
  // その結果を表示する部分を記述します。
  
  // Excelシートに結果を出力する処理
  const sheet = workbook.getActiveWorksheet();
  
  // ヘッダー行の書き込み
  sheet.getRange("A1").setValue("レポート作成日時");
  sheet.getRange("B1").setValue("未読メール件数");
  sheet.getRange("C1").setValue("特定送信者 (support@example.com) からのメール件数");

  // 現在の日時を取得
  const now = new Date();
  const timestamp = now.toLocaleString();

  // 結果をシートに書き込む (仮の値)
  // 実際には、Power Automateから渡された値や、
  // Graph APIで取得した値を使用します。
  // ここでは、仮の未読メール数と特定送信者からのメール数を設定します。
  unreadMailCount = 15; // 仮の値
  specificSenderMailCount = 3; // 仮の値

  sheet.getRange("A2").setValue(timestamp);
  sheet.getRange("B2").setValue(unreadMailCount);
  sheet.getRange("C2").setValue(specificSenderMailCount);

  // 列幅の自動調整
  sheet.getUsedRange().getFormat().autofitColumns();

  console.log("受信トレイレポートがExcelに作成されました。");
}

コードの解説と補足:

  • 上記のコードは、Office Scriptsが直接Outlookのメールボックスにアクセスする機能を持っていないため、概念的な記述となっています。実際のOutlook連携は、Microsoft Graph APIを利用し、Power Automateを介して行います。
  • Power Automateフロー内で、Microsoft Graph APIを使ってOutlookからメールデータを取得し、その結果をExcelのブックに書き込みます。
  • そして、そのExcelブックに対してOffice Scriptsを実行し、取得したデータを整形してレポートとして出力するという流れになります。
  • このスクリプトでは、Excelの現在アクティブなシートに、レポート作成日時、未読メール件数、指定した送信者からのメール件数を書き込む処理を記述しています。
  • `console.log()` は、スクリプト実行時にデバッグ情報を確認するためのものです。

スクリプトの保存

コードを記述したら、スクリプトを保存します。スクリプトエディタの上部にある「名前を付けて保存」ボタンをクリックし、分かりやすい名前(例: “InboxReportScript”)を入力して保存します。

Power Automateによる自動実行設定

作成したOffice Scriptsを毎日自動で実行し、レポートを作成するには、Power Automateを利用します。Power Automateでフローを作成することで、指定した時間にスクリプトが実行され、結果がExcelファイルに記録されるようになります。

Power Automateフローの作成

まず、レポートの出力先となるExcelブックをOneDrive for BusinessまたはSharePointに準備します。このブックには、スクリプトが書き込むためのシート(例: “レポート”)が必要です。

  1. Power Automateにアクセス
    ブラウザでPower Automate (make.powerautomate.com) にアクセスし、サインインします。
  2. 「作成」から「スケジュール済みクラウドフロー」を選択
    左側のメニューから「作成」を選択し、「スケジュール済みクラウドフロー」をクリックします。
  3. フロー名と実行間隔を設定
    フロー名に「Outlook受信トレイレポート作成」などを入力します。
  4. 「繰り返し間隔」を「日」に、「時刻」をレポートを作成したい時間(例: 毎日午前9時)に設定します。
  5. 「作成」ボタンをクリック
    設定が完了したら「作成」ボタンをクリックします。

Microsoft Graph APIコネクタの追加

フローの最初のステップとして、Outlookのメールデータを取得します。ここではMicrosoft Graph APIを利用します。

  1. 「新しいステップ」をクリック
    フローデザイナー画面で、「新しいステップ」をクリックします。
  2. 「Microsoft Graph」を検索
    検索ボックスに「Microsoft Graph」と入力し、コネクタを選択します。
  3. 「Get messages」アクションを選択
    利用可能なアクションの中から「Get messages」を選択します。
  4. 「フォルダー」で「受信トレイ」を選択
    「フォルダー」のドロップダウンリストから「受信トレイ」を選択します。
  5. 「トップN」に取得したいメール数を設定
    例えば、直近100件のメールを取得したい場合は「100」と入力します。
  6. 「フィルタークエリ」で条件を指定
    未読メールのみを取得したい場合は、フィルタークエリに `isRead eq false` と入力します。特定の送信者からのメールを取得したい場合は `from eq ‘support@example.com’` のように指定します。

Office Scriptsコネクタの追加

次に、取得したメールデータをOffice Scriptsに渡してExcelに書き込ませます。

  1. 「新しいステップ」をクリック
    「Get messages」アクションの後に、「新しいステップ」をクリックします。
  2. 「Office Scripts」を検索
    検索ボックスに「Office Scripts」と入力し、コネクタを選択します。
  3. 「Run script」アクションを選択
    利用可能なアクションの中から「Run script」を選択します。
  4. スクリプトの場所とスクリプト名を選択
    「スクリプトの場所」で、スクリプトを保存したExcelブックがある場所(OneDrive for BusinessまたはSharePoint)を選択します。
  5. Excelブックとスクリプト名を選択
    「ドキュメントライブラリ」でExcelブックが保存されているライブラリを選択し、「ファイル名」でそのExcelブックを選択します。
  6. 「スクリプト名」で作成したスクリプト(例: “InboxReportScript”)を選択します。
  7. 「スクリプト パラメーター」を設定(必要であれば)
    もしスクリプトがパラメータを受け取るように設計されている場合は、ここで値を設定します。今回の例ではパラメータは使用しません。

Excelへの書き込み処理の確認

Office Scriptsのコードで、Power Automateから渡されたデータをExcelに書き込む部分が正しく機能するか確認します。前述のスクリプト例では、`unreadMailCount` や `specificSenderMailCount` を仮の値として設定していますが、実際にはPower Automateから渡された値を使用するように変更する必要があります。

Power Automateの「Get messages」アクションで取得したメールの件数などを、Office Scriptsのスクリプトパラメータとして渡すか、あるいはPower Automate側でExcelに直接書き込む処理を追加することも可能です。より汎用的な方法としては、Power Automateでメールの件数などを計算し、その結果をOffice Scriptsのパラメータとして渡す、という形になります。

Power Automateでのメール件数カウント例:

  1. 「Get messages」アクションの後に追加
    「Get messages」アクションの後に、新しいステップとして「データ操作」コネクタの「初期化変数」アクションを追加します。
  2. 変数の初期化
    「名前」に「UnreadCount」、「型」に「整数」を設定します。
  3. 「Apply to each」ループの追加
    「Get messages」アクションの結果を処理するため、「Apply to each」アクションを追加します。
  4. 条件分岐(If)の追加
    「Apply to each」ループの中に「条件」アクションを追加します。
  5. 条件の設定
    「isRead」プロパティが「false」であるか、または「from.email」が指定したメールアドレスと一致するか、といった条件を設定します。
  6. 条件が真の場合に変数に加算
    条件が満たされた場合に、「初期化変数」で作成した「UnreadCount」変数に1を加算するアクションを追加します。
  7. Office Scriptsへのパラメータ渡し
    Office Scriptsの「Run script」アクションで、「スクリプト パラメーター」として `UnreadCount` 変数の値を渡します。スクリプト側では、このパラメータを受け取るようにコードを修正します。

フローの保存とテスト

フローのすべてのステップを設定したら、右上の「保存」ボタンをクリックしてフローを保存します。その後、「テスト」ボタンをクリックして、手動でフローを実行し、期待通りに動作するか確認します。テストが成功したら、フローはスケジュールされた時間に自動実行されるようになります。

ADVERTISEMENT

新しいTeams(v2)・新しいOutlookでの注意点

新しいTeams(v2)や新しいOutlookは、UIや一部機能が変更されています。Office Scriptsへのアクセス方法や、Power Automateとの連携方法自体は大きく変わりませんが、Web版のインターフェースでメニューの配置などが異なる場合があります。もし、Office Scriptsエディタが見つからない場合は、TeamsやOutlookのWeb版の「設定」メニューなどを確認してみてください。

また、組織のIT管理者によって、Office ScriptsやPower Automateの利用が制限されている場合もあります。もし手順通りに進まない場合は、組織のポリシーや管理者設定を確認することをお勧めします。

まとめ

本記事では、Microsoft Outlookの受信トレイから定期的なレポートを作成するために、Office ScriptsとPower Automateを連携させる手順を解説しました。これにより、未読メールの件数や特定の送信者からのメール件数を自動で集計し、Excelファイルに記録することが可能になります。

まずは、Outlook Web版からOffice Scriptsエディタにアクセスし、基本的なスクリプトを作成することから始めてみましょう。次に、Power AutomateでMicrosoft Graph APIを利用してメールデータを取得し、作成したスクリプトを実行するフローを構築します。この自動化により、日々のメール管理業務の効率が大きく向上します。

さらに応用として、取得したメールデータを分析し、特定のキーワードを含むメールの件数をカウントしたり、メールの内容を要約してレポートに含めたりすることも可能です。ぜひ、この自動化を活用して、Outlookのメール管理をよりスマートに進めていきましょう。

👥
Teams/Outlookトラブル完全解決データベース サインイン、接続エラー、メール送受信の不具合など、特有のトラブル解決策を網羅。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
🌐

超解決 リモートワーク研究班

Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。