概要
Excel のテーブルに書かれた情報を元に ブログの記事ファイルを1日1回自動生成し、メールで送ります。
このアーキテクチャは Microsoft アカウント(outlook.jp)または企業アカウントや有料ライセンスが必要です。詳しくはこちらをご参照ください。
個人で無料で始める Microsoft Flow
個人アカウントでも作成可能ですが、SLA がないので、実行に失敗することもあります。(ほとんど起きませんが。)
アーキテクチャ
この仕組みは私のブログでも利用し、RSS や Tweet 等を取得し、ファイル生成するのに役立っています。(ブログは GitHub Pages を利用し作成している為、Markdownファイルでの記事投稿を行っています)
https://www.powerplatform.work/blog/
その為、仕様として、
「1日1回 18時にその日に投稿するブログ記事のファイルを添付ファイルとして複数のメールで送信する」とします。
今回はわかりやすさと汎用性の高さを優先で、トリガーにスケジュールトリガーを用いていますが、別のトリガーにすることも可能です。(例えば、あるブログが更新された時や位置情報がとか、HTTP Request時等。ただし、有料ライセンスが必要なものも存在します。)
作成
こちらが Automate の全体像になります。
まずは Excel の準備を行いましょう。
Excel を用意
お使いの OneDrive に Excel ファイルを配置、作成します。
今回は AutoBlog.xlsx を作成しました。
続いてテーブルを用意します。
Power Automate から Excel のデータを取得するには、テーブル形式からしか取得できません。
カラムは自由で構いませんが、同じ記事が何度もメール送信されるのは面倒ですので、「pushDay」等の投稿日付(ODATA フィルターを行うため、できればデータ型標準で[yyyyMMdd]形式で保存しておくと良い)が分るカラムを作成しておきましょう。
レコードを一意に特定するための ID 列等もあると後々、レコードを検索するのに役立ちます。
Automate の解説
時刻
トリガーは時刻トリガー(スケジュールトリガー)を選択します。
当日に投稿したい内容を取得するので、「現在の時刻」を選択します。ただし、ここで取得できる時刻は UTC の為、「タイムゾーンの変換」を利用し、日本時間に変換します。また書式の設定として、[pushDay]と同じ書式にします。今回は yyyyMMdd としました。
Excelからデータを取得する
フィルタークエリである、OData を用いてその日に投稿するレコードだけに絞ったデータを取得します。
書き方はこちらをご参照ください。
https://personium.io/docs/api/1.3.25/Japanese/docs/ja/rest_api/common/common_query/FilterQuery.htm
注意点として、 ge や le といった一部クエリは対応していません。基本的には eq で検索を行う必要があります。
記事を生成し、メールで送信
今回利用している私のブログで利用しているフレームワークの仕様がこのようになっている為、作成しているデータもこのようになっていますが、ここはご自身の形式に合わせて「作成」と「添付ファイル名」を設定してください。
完成
テストデータを作成し、添付ファイル付きのメールが送られてくることを確認しましょう。
まとめ
今回は ブログ記事を作成する内容ですが、Tweet や社内への周知、定期的な投稿などにも役立つ仕組みですので、ぜひチャレンジしてみてください。
次回以降で用意した Excel にコンテンツを追加する仕組みを作ります。