はじめに
前回、Power Automateを使ってOneNoteの内容をTeamsに転記するフローを作成しました。
この時のフローではOneNoteの特定のページを決め打ちした上で、その内容をTeamsに投稿するところまで実装しましたが、最終的にはOneNoteの複数ページから狙ったものを指定してスケジュール投稿出来るようにしたいと考えています。
そこで今回は、任意の文字列から特定のページだけを抽出する仕組みをPower Automateで作成してみました。
OneNoteの状態
まず、タイトルの異なる3つのページを作成しました。
今回はここから「1.2 TestPage2:やさい 」だけ抽出したいと思います。
現状のフローの確認
現状は、ページコンテンツを取得する際、ページIDを選択肢から選んでいます。正確に言うと、選択肢からページを選ぶことで、ページに設定されているページIDを設定しています。
この「ページID」を選択肢から選ぶのではなく、任意の値を入れられるようにしていきたいと思います。
具体的には、手動でトリガーする際に入力する文字列(ページの項番)を元に、OneNoteのページを指定できるようにしたいと思います。
フローの編集
セクション内のページをすべて読み込む
「ページ コンテンツを取得」で実施毎に取得ページを変更できるようにするには、ページIDを変えればいいのですが、残念ながらOneNoteのページIDが分かりません。分かるのはページのタイトルだけです。
なので、まずは一旦、セクション内のページをすべて読み込みます。
条件に該当するページの絞り込み
読み取ったセクション内のページ情報を、アレイのフィルター処理でフィルタします。
今回は、フロー実行時に「1.2」などと入力する想定なので、OneNoteのタイトルがフロー開始時の入力で始まることを条件にします。
絞り込んだページのコンテンツを取得
あとは、「ページ コンテンツを取得」でカスタム値としてフィルタした値のIDを設定すればいいのですが、そのまま設定すると自動的に繰り返し処理になってしまいます。
これでも動くのですが、今回は絞り込み後のページは一つしかない想定なので、一度繰り返しの部分を削除して、式を使って設定しなおします。
実際の式はこちらです。
first(body('アレイのフィルター処理'))?['id']
フローの実行
では、これで実際に動かしてみましょう。
ページの指定
フローを開始するとページの項番を求められます。今回は1.2
を入力します。
Teamsの確認
指定した通り、1.2のページがTeamsに投稿されました。*1
フロー実行結果の確認
念のためフローの実行結果も確認してみましたが、正しくページIDを取得して、ページ内容を読み取ってくれていました。
おわりに
今回はフロー実行時に文字列でページを指定する形を取りましたが、あらかじめ配信日時や項番を入力したExcelを用意しておけば、スケジュール実行で特定日に特定のページをTeamsに投稿する、お知らせのような仕組みが作れると思います。
皆さんのPower Automateライフの参考になれば幸いです。
*1:念のため他のページも一緒に投稿されていないかも確認しましたが大丈夫でした。
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットでPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。
担当記事一覧