Power AutomateでOneNoteから任意のページを選択する

はじめに

前回、Power Automateを使ってOneNoteの内容をTeamsに転記するフローを作成しました。

blog.jbs.co.jp

この時のフローでは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やMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。好きなサービスはPower Automate / Logic Apps。好きなアーティストはZABADAK。

担当記事一覧