前回までに、PowerAutomateで請求書の作成を自動化する方法の1つとして、テンプレートファイルとデータファイルの2つに分けて考える方法を紹介した。前回はデータファイルから会社情報などコピーして自動入力させたが、今回はデータファイルから請求金額のデータを取り出す処理を紹介する。
自動化したい処理を確認
前回のフローをコピーして「請求書作成 その4」を作成する。
今回のフローで行う処理を確認しよう。まず、次のデータファイルから該当する請求項目を見つける。今回のケースであれば次のスクリーンショットの赤枠で囲ったデータを抜き出してみよう。
抜き出すデータは1列目の「請求対象年月」に一致するかどうかで判断する。今回のケースで言えば2023年11月のデータが欲しいので、1列目のデータが「202311」になっている行の2列目と3列目のデータを参照する。
そして、次のスクリーンショットのようにテンプレートファイルの請求項目に抜き出した値を自動入力させていく。
これを実現するには、「繰り返し」と「条件分岐」というプログラミング的な処理をする必要がある。Power Automateで実用的なフローを作る良いサンプルだ。
データファイルから請求データを抜き出すフローを作る
請求書は、取引先によって先月のものや来月のものなど対象月が異なることが多い。処理の途中でどの月に対する請求書を作成するのかを指定できるようにしておきたい。
しかし、Power Automateには日付を選択するためのダイアログは用意されているが、年月を選択するためのダイアログは用意されていない。そこで、テキストを入力するアクション「入力ダイアログを表示」で代替する。毎回入力するのは手間なので、デフォルトで当年月が表示されるようにしておこう。まずは、次のように現在日時のデータから年月のテキストを生成する。
生成した変数「%FormattedDataTime3%」を指定して、年月を入力するためのダイアログを表示させる。
データファイルからデータを読み込む必要があるので、行数をベースにデータを見ていく。先に示したファイルでは13行目からデータが入っているので、次のように行を示す「%NumberOfRow%」という変数を用意し、その値を13に設定しておこう。
データを下の行へ向かってチェックしたいので、とりあえず10,000行まで参照するようにループを作成する。
ループの中では「行の値を読み取って表示する」という処理を行う。「Excelワークシートから読み取る」を使って次のように対象セルのデータを読み取る。
動作確認をしながら作っていくとわかりやすいので、ここで読み取ったデータをメッセージダイアログで確認できるようにしておく。
本当に10,000行まで処理を繰り返しても意味がないので、読み込んだセルの値が空だったらループを抜けるようにする。「If」というアクションを次のように追加し、対象となる変数が「空である」かどうかを演算子として設定する。
そして「If」の中に「ループを抜ける」というアクションを追加する。
これでデータが入力されていない行がに到達したらループ処理から抜ける。ループ終了方法の一つとして覚えておこう。
「If」の処理が終わったら、行数を指す「%NumberOfRow%」の値を「変数を大きくする」で1つ加算する。加算しないと次の処理に進まないので、この処理は忘れないようにしよう。なお、今回のケースでは、ループで自動生成される%LoopIndex%を使うことで自分で加算する手間を省くという方法もある。
ここまでの処理をフローで見ると次のようになる。
処理が「Loop」で回りながら、「If」アクションでループの終了判定を行っていることがわかる。
動作を確認する
ここまでのフローを実行する。処理が走った後で、次のようにデータファイルから読み出したセルのデータが表示される。この部分の処理はループの中なので、繰り返し実行される。
「OK」ボタンを押していくと次々に値が表示されていく。次のスクリーンショットが最後のデータが表示された部分だ。
ここで「OK」を押すと、さらに次のようなダイアログが表示される。何もデータが書き込まれていないので、空のまま表示されている。
ここで「OK」を押すと処理は完了だ。
対象年月の請求データのみを取り出すようにフローを書き換える
さらに動作を作り込んでいく。請求データが取り出せることはわかったので、次の対象年月の請求データのみを取り出す条件を追加する。条件は「If」アクションで次のように設定しよう。
「If」の条件に一致した場合に、その行の2列目と3列目のデータを取り出せるように「Excelワークシートから読み取る」アクションを追加する。
取り出したデータを確認したいので、「メッセージを表示」アクションで表示させる。
ここまでで、該当部分のフローは次のようになっている。
「対象年月だった場合にデータを取り出して表示する」という処理が書かれていることがわかる。
実行して動作を確認
ここまでのフローを実行して動作を確認してみよう。実行すると次のようにデータファイルを選択するためのダイアログが表示される。
ファイルを選択すると次のようにMicrosoft Excelが対象データファイルをオープンする。
そして、どの年月のデータから請求書を作成するかを指定するためのダイアログが起動する。
そして次のように2つの請求データが表示される。
欲しかったデータが取得できた。
繰り返し(ループ)と条件分岐(If)で汎用化
今回のフローのようにループで処理を繰り返し、条件分岐(If)で状況に応じて処理を変えるというのはPower Automateで実用的なフローを組む場合に基本となる制御方法の一つだ。
Power Automateでは、複雑な条件フローを組み立てるよりも、シンプルな状態にキープするのがオススメではある。しかし、今回のようにプログラミング的な設定ができることは覚えておいていただきたい。
必要なデータを取り出せたので、次はこのデータを入力していけばよい。行う処理は今回の処理の逆だ。ループで繰り返し処理を行いながら、請求書にデータをはめ込んでいく。