Help us understand the problem. What is going on with this article?

【#PowerAutomate】Excel から ブログの記事を自動生成してメールで送る方法

概要

Excel のテーブルに書かれた情報を元に ブログの記事ファイルを1日1回自動生成し、メールで送ります。

このアーキテクチャは Microsoft アカウント(outlook.jp)または企業アカウントや有料ライセンスが必要です。詳しくはこちらをご参照ください。
個人で無料で始める Microsoft Flow

個人アカウントでも作成可能ですが、SLA がないので、実行に失敗することもあります。(ほとんど起きませんが。)

アーキテクチャ

この仕組みは私のブログでも利用し、RSS や Tweet 等を取得し、ファイル生成するのに役立っています。(ブログは GitHub Pages を利用し作成している為、Markdownファイルでの記事投稿を行っています)
https://www.powerplatform.work/blog/

その為、仕様として、
「1日1回 18時にその日に投稿するブログ記事のファイルを添付ファイルとして複数のメールで送信する」とします。

図1.png

今回はわかりやすさと汎用性の高さを優先で、トリガーにスケジュールトリガーを用いていますが、別のトリガーにすることも可能です。(例えば、あるブログが更新された時や位置情報がとか、HTTP Request時等。ただし、有料ライセンスが必要なものも存在します。)

作成

image.png

こちらが Automate の全体像になります。

まずは Excel の準備を行いましょう。

Excel を用意

お使いの OneDrive に Excel ファイルを配置、作成します。
今回は AutoBlog.xlsx を作成しました。

image.png

続いてテーブルを用意します。
Power Automate から Excel のデータを取得するには、テーブル形式からしか取得できません。

image.png

カラムは自由で構いませんが、同じ記事が何度もメール送信されるのは面倒ですので、「pushDay」等の投稿日付(ODATA フィルターを行うため、できればデータ型標準で[yyyyMMdd]形式で保存しておくと良い)が分るカラムを作成しておきましょう。
レコードを一意に特定するための ID 列等もあると後々、レコードを検索するのに役立ちます。

Automate の解説

時刻

トリガーは時刻トリガー(スケジュールトリガー)を選択します。
当日に投稿したい内容を取得するので、「現在の時刻」を選択します。ただし、ここで取得できる時刻は UTC の為、「タイムゾーンの変換」を利用し、日本時間に変換します。また書式の設定として、[pushDay]と同じ書式にします。今回は yyyyMMdd としました。
image.png

Excelからデータを取得する

フィルタークエリである、OData を用いてその日に投稿するレコードだけに絞ったデータを取得します。
image.png

書き方はこちらをご参照ください。
https://personium.io/docs/api/1.3.25/Japanese/docs/ja/rest_api/common/common_query/FilterQuery.htm

注意点として、 ge や le といった一部クエリは対応していません。基本的には eq で検索を行う必要があります。

記事を生成し、メールで送信

今回利用している私のブログで利用しているフレームワークの仕様がこのようになっている為、作成しているデータもこのようになっていますが、ここはご自身の形式に合わせて「作成」と「添付ファイル名」を設定してください。

image.png

完成

テストデータを作成し、添付ファイル付きのメールが送られてくることを確認しましょう。

まとめ

今回は ブログ記事を作成する内容ですが、Tweet や社内への周知、定期的な投稿などにも役立つ仕組みですので、ぜひチャレンジしてみてください。
次回以降で用意した Excel にコンテンツを追加する仕組みを作ります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away