はじめに
Graph API でメールを取得するとメールにwebLinkというプロパティがあり、このリンクにアクセスするとOutlook on the Webでメールを直接開くことができます。
このURLがあればメールと他のアプリの連携がやりやすくなり便利そうなのですが、このURLを取得する方法はOutlook on the Webのメールの画面を探しても見つかりませんでした。そこでGraph APIを使わずにメールのURLを取得する方法を調べてみました。
URLを取得する方法
1.Outlook on the Web でメールにフラグを付ける
2.Microsoft To Doを開く
3.To Do で「フラグを設定したメール」リストを開く
4.メールのタスクをクリック
5.「開く」を右クリックしてリンクのコピー
以上の手順でメールへのリンクが取得できます。
URLの形式について
Graph APIとTo Doのタスクから取得できるメールのURLは同じ形式で、次のような形になっています。
https://outlook.office365.com/owa/ ?ItemID={id} &exvsurl=1 &viewmodel=ReadMessageItem
{id}にはメールの内部的なidが指定されています。
その他のパラメーターの意味は分かりませんでした。
このURLにアクセスすると、下記の形式のURLにリダイレクトされます。
https://outlook.office365.com/mail/deeplink/read/{id}%3d ?ItemID={id} &exvsurl=1
※?以降のパラメータを削除しても開くことができました。
Power Automate クラウドフローで楽をする(1)
少数であればTo Do からリンクを取得するもありですが、数が増えると面倒になってきます。
例えば、こんな簡単なフローを作っておくと、フラグを付けたメールのリンクをTeamsチャットに投稿します。
Power Automate クラウドフローで楽をする(2)
To Do のフラグ付きメールのリストをCSV出力するフローです。リンクが欲しいメールにフラグを付けておき、このフローを実行してCSVファイルに一括出力させる方法です。
フロー解説
1.[Flow button for mobile]フローを手動でトリガーする
2.[Microsoft To-Do (Business)]フォルダー別に To Do を一覧表示する (V2)
- To Do リスト
- Flagged Emails
3.[Data Control] 選択
- From
- @{body('フォルダー別に_To_Do_を一覧表示する_(V2)')}
- Maps
- title
- @{item()?['title']}
- createDateTime
- @{item()?['createdDateTime']}
- WebUrl
- @{item()?['linkedResources'][0]?['webUrl']}
- title
4.[Data Control]CSVテーブルの作成
- From
- @{body('選択')}
5.[OneDrive for Business]ファイルの作成
- フォルダーのパス
- /MailExport/
- ファイル名
- ファイルコンテンツ
- @{body('CSV_テーブルの作成')}
関連ページ
さいごに
今回の手段は自分のメールボックスだけで使えます。共有メールボックスやMicrosoft365グループのメールボックスのメールの場合は、フラグを付ける機能がなかったり、To Doにタスクを追加することができませんでした。解決策を思いついたらまた記事にします。