2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power AppsでOutlookのメール アーカイブツールを作る

Posted at

はじめに

メールを保存する
証跡を残す文化には必要かもしれませんね。

Power Automateメールのエクスポート (V2) アクションが存在します。

Power Automate必須の作業に感じていましたが、Power Appsだけでも、メールの保存が完結できました。

上記について、Qiitaに残していきたいと思います。

前提

Power Automateを使わずに、メールファイルを保存するためには
メールファイルの格納先をSharePoint Listsに設定する必要があります。

上記以外の方法が、現段階では私は見つけられていません。
ファイル コンテンツを保存できるアクションが、Power AppsCollect関数以外、見つけられていないためです。

実際に作ってみる

作成したアプリは下記のようなものです。

  • Power Apps - Office 365 Outlookに接続して、メールを一覧化する
    image.png

  • Power Appsのアーカイブボタンを押すと添付ファイル込みで、SharePoint Listsの添付ファイルに保存される
    image.png

メールはChatGPTで作成した架空のものです

作成手順

Power Appsで、下記の3つのデータに接続します。

image.png

レイアウトは、いつもの感じです。

  1. ヘッダー
  2. サイドバー
  3. メインセクション

テンプレートが非常にクオリティーが高いので、そちらを活用します。

ギャラリーコントロール

ギャラリーコントロールのデータソースは下記のとおりです。

Office365Outlook.GetEmails({fetchOnlyUnread:false})
名前 パラメーター データ型 説明
未読のメッセージのみ取り込む fetchOnlyUnread boolean 未読の電子メールのみを取得
フォルダー folderPath string 電子メールを取得するメール フォルダー (既定: 「Inbox」)
添付ファイルを含む includeAttachments boolean true に設定すると、電子メールと共に添付ファイルのコンテンツも取得される
検索クエリ searchQuery string メールをフィルター処理する検索クエリ、パラメーターの使用方法
上詰め top integer 取得するメールの件数 (既定: 10, 最大: 25)
スキップ数 skip integer スキップするエントリ数 (既定値 = 0)

ポイントはfetchOnlyUnread:falseです。こちらを設定しないと未読の電子メールのみを取得となってしまい、戸惑います。

フォルダで制限するときはfolderPathで対象を指定しましょう。

だれのアカウントに接続するのか

Outlookをデータソースにすると、Power Appsを作成した人のメールが表示されるのでは・・・?と思いますが、Power Appsを使用しているユーザーのアカウントのデータが表示されます。

image.png

あくまでログインしているアカウントのメールが表示されます。

自分の予想以上のアクセス権限は発生しません。

Office365Outlook.ExportEmailV2 - メールのエクスポート (V2)

  1. メールをBlobとして変数に保存する
  2. SharePoint Listsに添付ファイルとしてメールファイルを保存する

上記の二段階で実施します。

SharePoint Listsに添付ファイルとしてメールファイルを保存するにことについては、Microsoft MVPのコルネさんのブログが非常に参考になります。

Office365Outlook.ExportEmailV2 アクションの戻り値はBlobです。

コンテキスト変数にメールコンテンツを格納する
UpdateContext({data:Office365Outlook.ExportEmailV2(<メールID>)});

メールコンテンツをコンテキスト変数に格納して、SharePoint Listsに、項目を作成して、添付ファイルとして追加します。

// 1. コンテキスト変数にメールファイルを格納
UpdateContext({data:Office365Outlook.ExportEmailV2(galMails.Selected.Id)});

// 2. SharePoint Listsに項目を作成、添付ファイルとして追加
Collect(mailArchive,
    {
        タイトル: GUID(),
        添付ファイル: 
            Table(
                {
                    DisplayName: Text(Now(),"yyyymmddHHmmss") & ".eml",
                    Id: GUID(),
                    Value: data
                }
            )
    }
)

添付ファイル:の部分で、配列でファイルを追加します。

実行すると・・・

さて、実行をすると添付ファイル込みで、SharePoint Listsにメールが保存されていることがわかります。

image.png

おわりに

Power Appsだけでもいけるものですね。

Microsoft MVPにちゃっかりなれました。
よかったら祝ってください。

2
6
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
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?