1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

APIがなくても大丈夫! JSONメールでPower Automateと連携する

1
Posted at

何かのデータを管理している既存のシステムと、Power Automateのクラウドフローとを連携させて使っているというケースは多いでしょう。APIを使って連携できるならそれに越したことはないのですが、なかなかそうもいきません。

多くのシステムではメール送信の機能を持っていたりします。
たとえばレガシーなチケット管理では、担当者を指定すると通知メールを送信するような仕組みがたいていあるでしょう。
職場で利用しているワークフローシステムは、承認結果をメールで通知することができます。以下の内容で承認されましたってやつです。よくありそうですよね。

ふつうの通知メールは件名と要約とリンク等が記載されていて、担当者はそれを処理するわけですが。
このメールをPower Automateで受け取り、その内容を使って後続処理ができたら……。そう考えたことはありませんか?

受信側でAIを使う? いや、JSONで送信すればいい

ぱっと考えそうなのは、今どきのAIによる文章解析です。日本語の文章をコンピュータが処理できる形に要約してくれるかもしれません。

けれど、発想を変えて、メールを送信する側であるレガシーなシステムに、メールの本文を書き換えられる機能があるならば。メールをそのまま後続処理に使えます。

そこでJSONですよ!

JSONとは? という馴染みのない方には、inokageさんのこちらの記事をどうぞ。

記事から例を拝借しました。 //より後ろはコメントなので無視して大丈夫です。

{
  "name": "Yamada", // 名前
  "age": 30,      // 年齢
  "skills": ["Python", "JavaScript"] // スキルのリスト
}

このように、波括弧で囲まれ、"name"や"age"などのキー(Excelの表でいうなら列名)のあとに、「:」で区切った後ろに値としてセルの値が入っているような構造です。

"skills"だけは 角括弧に囲まれて"Python"と"JavaScript"という2つの値が記載されています。このように、ひとつのキーに対して複数の値を「配列」として持たせることもできます。
大事なことは、これ、ただの文字列テキストだというところです。

テキストならメールで送信できる

ここで、レガシーシステムのメール送信に話が戻ってきます。
勘のよい人ならもうお気づきですね? メール本文のフォーマットを編集できるのであれば、本文をJSON形式で出力してしまえばよいのです。

Power AutomateにJSONを渡すと何ができる?

たとえば、上流のシステムにはそういう機能がなくても、下記のようなことは比較的かんたんに実現できそうです。

  • シンプルにメールの代わりにTeamsで担当者通知
  • 承認済みのライセンス付与を自動化
  • 申請内容をSharePointやDataverseのテーブルに記録して台帳化
  • インシデント情報やFAQの下書きをAI Builderで生成し、投稿まで自動化
  • サービスリクエストの問い合わせ文章を代筆

SharePointリストに記録してみる

送信側の設定

たとえば、インシデント記録システムから、このようなメールフォーマットでメールを送信できるようにできたとしましょう。
メール送信ができるようなシステムならば、入力した項目の値を文章の中に配置ができるはずです。JSONとして表現するならば、内容がわかる適当な「キー」と一緒に配置するだけです。

{
"ユーザー":"DDさん",
"発生時刻":"2026/9/20 10:00",
"質問":"Teamsアプリの設置をMarkdownでの入力が可能な状態にしていると、ブラウザからコピーしたURLを貼り付けてもリンクにならず、サイトの名称がテキスト表示されるだけになってしまう。",
"事象再現":"ヘルプデスクの端末でもユーザーと同じ設定にした場合に事象が発生することを確認した。",
"ステータス":"Microsoftに問い合わせ中"
}

受信アカウントのOutlookにフォルダ作成と振り分け設定

メールを受け取るアカウントのOutlookに、適当なフォルダを作成します。Outlook自体のメール振り分け機能を使って、システムの送信元アドレスや、件名で振り分け設定を行うと良いでしょう。

image.png

Automateのトリガーを設定

トリガーには「新しいメールが届いたとき(V3)」を設定し、先程Outlookに作成した振り分けフォルダを指定します。

次に「作成」アクションを配置して、式からJSON関数をつかってトリガーの本文を関数に渡すようにします。
image.png

受け取るメール自身でも構わないので、テストのJSON本文を送信してみます。
その際に、必ず「オプション」>「テキスト形式に切り替え」をクリックして、メール送信をHTMLではなくテキストのメールとして送信できるようにしておきます。
image.png
image.png

テスト実行

この状態でメールを受信すると「作成」のなかにJSONの本文が受け取れたことがわかります。
image.png

SharePointリストに記録する

項目に合わせてこんなリストを作ってみました。
image.png

ひとまずユーザーだけ「項目追加」アクションで設定してみます。いちどテストでメールを受信しているので、テスト>自動 で先程のトリガーを再度動かすことができます。
image.png

User
outputs('作成')?['ユーザー']

ちゃんと反映しました。
image.png

次は日時型の発生時刻も同様に与えてみます。

発生時刻
outputs('作成')?['発生時刻']

なんか時刻がずれてる。テストJSONの日本時間10:00はUTCでは01:00になるはずなので、それとも一致しません。これはよくありません。
image.png

occurrenceTime(修正版)
convertTimeZone(
    outputs('作成')?['発生時刻'],
    'Tokyo Standard Time',
    'UTC',
    'yyyy-MM-ddTHH:mm:ssZ'
)

原因は、SharePointサイトのタイムゾーン設定が米国時間になっていたことでした。
image.png
タイムゾーンを変更しました。
image.png

先程のConvertTimeZone関数を使ってUTC時刻にしたものが正しく日本時間表示されました。SharePointリストに日時型で登録するときにはUTC時刻へ変換するのが正解です。
image.png

あとはテキストなので簡単です。JSONのキー名で値をとってきます。

質問
outputs('作成')?['質問']
事象再現
outputs('作成')?['事象再現']
ステータス
outputs('作成')?['ステータス']

ばっちり記録できました。
image.png

要領は基本的に同じ

上記の例ではSharePointリストへの書き込みをしてみましたが、Teamsで担当者にメッセージを飛ばしたり、承認を回したり、AIに渡したり。前段システムからJSON形式で情報を受け渡せるようになれば、Teams通知、承認フロー、SharePoint記録、AI活用などさまざまな自動化へ発展させられます。

まとめ

今回は、レガシーなシステムやワークフローシステムから送信されるメールを、Power Automateで受信して活用する方法を紹介しました。

API連携の仕組みが用意されていないシステムでも、メール本文のフォーマットを自由に編集できるのであれば、JSON形式でデータを出力することでPower Automateとの連携が実現できます。

Power Automateでは受信したメール本文を json() 関数でオブジェクト化できるため、

  • Teamsへの通知
  • SharePointやDataverseへの記録
  • 承認フローの起動
  • AI BuilderやCopilotへのデータ連携
  • 各種システムとの自動連携

など、さまざまな後続処理へ簡単に発展させることができます。

特に、「メールは送れるけれどAPIはない」というシステムは意外と多く存在します。そのような環境でも、メールを単なる通知手段として扱うのではなく、「構造化データの受け渡し手段」として活用することで、自動化の可能性は大きく広がります。

既存システムを大きく改修することなく、手軽にPower Automateと連携できる方法として、ぜひ試してみてください。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?