コラム - お役立ち情報

2023.02.03

【無料RPA】Power Automate Desktop(PAD)活用事例 表形式データのDatatableを活用しよう!

本シリーズでは、Power Automate Desktop※を活用して業務効率化に役立てる方法をご紹介しています。
今回は、データを加工することに適したDatatable型についてご紹介します。
Datatable型の扱いをマスターすることでWebブラウザ等から抽出したデータをエクセルやCSVにまとめる作業を自動化できるようになります。リストの作成やデータ収集の効率化を考えている方に特におすすめです。

※Power Automate Desktop (PAD)とは?
MicrosoftがWindows10ユーザー向けに無償で提供しているPC自動化ツールです。
プログラミングなしでPCの操作を自動化できます。
本コラムでは当ツールの活用方法をご紹介しています。
インストール方法はこちら

目次

1.今回のテーマ Datatable型とは
2.Datatable型の扱い方

3.まとめ

1.今回のテーマ Datatable型とは

Power Automate Dasktop(PAD)でのデータテーブルとは、Excelのように行と列で構成される、表形式のデータ型です。
Datatable型の変数はExcelからデータを読み取った際や、Webページの表からデータを読み込んだ際に生成されます。データの行や列ごとに処理ができるため、データの加工・整形に活用できます。
Datatable型変数の中身は下表のように行と列からなる表形式のデータです。2次元配列とも呼ばれ、1行を1件のデータとして、それが縦方向に並んでいます。



表の1行目は『ヘッダー』と呼ばれ、列ごとの項目名が格納されています。データとして使用する値は2行目以降に格納されます。


2.Datatable型の扱い方

それでは、上記の表を使ってPADでのデータテーブルの扱い方を解説していきます。

(1)Datatable型変数を作る

まず、表からデータを読込んでDatatable型の変数を作成する方法を紹介します。
Excelからデータを読み取って作る方法と、ブラウザから読み取って作る方法が主流ですが、今回はExcelから作成します。


使用するアクションは以下の2つです。

①. Excelの起動
②. Excelワークシートから読み取る

順番に見ていきます。


①. Excelの起動

Excelの起動:次のドキュメントを開く
ドキュメントパス:任意のExcelファイルのパス
その他:デフォルトのまま

まずはExcelファイルを開きます
Datatableの作成にはExcelインスタンス(Excelを画面で表示すること)は不要です。
[インスタンスを表示する]のチェックを外すとフローの実行速度が上がるため、速度が気になる方は試してみてください。

②.Excelワークシートから読み取る

Excelインスタンス:%ExcelInstance%
取得:ワークシートに含まれる使用可能なすべての値
セルの内容をテキストとして取得:チェックなし
範囲の最初の行に列名が含まれています:チェック

データの取得方法は『ワークシートに含まれる使用可能な全ての値』が便利です。
この設定にすると、データの件数が不定の場合でも全件のデータを取得できます。
これを実行すると、

このようにDatatableを作成できます。

 

(2)任意のデータを取り出す

次に、表の中から任意のデータを取り出す方法を紹介します。
『1行目』の『氏名』(「和井 菱雄」)をPADのデータテーブルで取得するには、
表(Datatable型変数)に対する行番号と列名
を指定する必要があります。詳しく見ていきましょう。

●行の取得

まず、表の名前をUserListとし、その「1行目」を指定するには、
【UserList[0]】という表記になります。
行番号は1行目が0、2行目は1…という数え方をします。[]の中に行番号を書くことで、データテーブルの指定した行を取り出すことが出来ます。
取り出した行は「Datarow型変数」となり、1行のデータになります。
↓は実際にPADで取得したDatarowです。

●列の取得

次にDatarowから指定した列の値を取り出します。
列を指定するには、
【UserList[0][“氏名”]】という表記になります。
[]の中に”(ダブルクォーテーション)で囲んだ列名を書くことでDatarowより指定した列を取り出すことが出来ます。


また、行番号と同じように列番号で指定することもできます。その場合、1行目の2列目なので、
【UserList[0][1]】という表記になります。
行番号同様0から数える点に注意してください。
行と列を指定して取得された値は、テキスト値となります。


これでデータテーブルから指定された値を取り出すことが出来ました。取り出した値は加工したりファイルに書き込んだりして使うことが出来ます。

 

(3)各行に対して同じ処理をする

PADでデータテーブルを扱う場合、表データの各行で共通の処理を行うことがほとんどです。そこで使用するのが「ループ」アクションです。
「ループ」アクションは以下の3種類です。どれも反復処理を行うという点では同じです。


A) For each

全ての値(行)に対して反復処理を行います。
データテーブルでの「ループ」には、ほぼこれを使用します。
[反復処理を行う値]に設定する変数がリスト型の場合は各要素が、Datatable型の場合は各行が繰り返しに使われます。



反復処理の中で生成されるCurrentItemにはデータテーブルの行(Datarow型変数)が格納されます。
因みに、Datarow型の変数も[反復処理を行う値]に設定できます。
その場合は、行データの中の要素を左から順番に処理していきます。

B) Loop

決まった回数分反復処理を行います。
パラメータには開始値・終了値・増分値を設定します。開始値に対して反復処理1回ごとに増分値を加えていき、終了値に達すると反復処理を終了します。

C) ループ条件

設定した条件から漏れるまで反復処理を行います。
比較する変数演算子を設定します。表の中から指定した個数のデータを取り出したいときなどに使用します。



それでは、「ループ」アクションを使用して表①「UserList」の各行から『氏名』をメッセージとして表示してみます。使用するアクションは以下の2つです。

①. For each
②. メッセージを表示

順番に見ていきます。
①. For each

反復処理を行う値:UserList
保存先:CurrentItem
→データテーブルの各行(Datarow型変数)が入ります。

②. メッセージを表示

反表示するメッセージ:CurrentItem[‘氏名’]


これを実行すると、
1行目

2行目

3行目

このようにデータテーブルの各行から氏名を表示出来ました。

 

(4)任意の列を取り出す

表の中から特定の列だけを取り出すには、「データテーブル列をリストに取得」アクションを使用します。
ここで、取り出した列はリスト型変数に格納されます。
リスト型変数は、1列だけのDatatableだと思ってください。Datatableとの違いは、ヘッダー行がないことです。
逆に言うとDatatableとは、複数のリストを横に並べてヘッダー行を付けたものと言えます。


それでは早速「UserList」から『氏名』を取り出してみます。データテーブルにUserList、列名に氏名を指定します。

生成された変数「ColumnAsList」には氏名のリストが格納されます。

リスト内の値を取り出すには「ColumnAsList[0]」のように行番号を指定します。
また、リストのままメッセージに表示することもできます。

以上で任意の列を取り出すことが出来ました。

3.まとめ

PADでデータを扱う場合、フェーズを以下の3つに分けることが出来ます。

①. 取得
②. 加工
③. 利用・保存

この3つの中で最も融通が利かないのが②の加工です。
というのも、大量のデータをPADで加工しようとすると、必然的に『リスト』『Datatable』をループ処理することになるからです。
どのようなデータを扱う場合でも、加工する際は一行一列の一つの値に対して処理を行うことになりますので、データをどのような形で取得するのかが非常に重要になります。
最終的にどのような形式のデータが欲しいのかを明確にしたうえでデータの加工手順を考えていくと取得したいデータの形が見えてくるかと思います。
慣れないうちは難しいですが、PADでのデータの扱いは創意工夫の見せどころです。是非チャレンジしてみてください。



あなたの疑問は解決しましたでしょうか?解決しなかった場合は直接質問も受け付けております!
執筆者にメールで質問する


 記事を書いた人
記事を書いた男性アイコン
 株式会社ワイ・ビー・シー
 営業部 開発チーム
 白川
 



PADに関連する記事はこちら
第1回 入門編 業務を自動化して作業を楽に
第2回 活用事例 メールの添付ファイルを自動保存
第3回 活用事例 Webページからデータを抽出しエクセルに転記
第4回 活用事例 無償アカウントでもフローを共有してさらに便利に!
第5回 活用事例 フローの不具合を見つけて直す
第6回 活用事例 表形式データのDatatableを活用しよう!
第7回 活用事例 「データテーブル」アクションを使いこなそう!
第8回 活用事例 面倒な複数箇所への転記作業はまとめて自動化!
第9回 活用事例 【続】面倒な複数箇所への転記作業はまとめて自動化!
第10回 活用事例 【続々】面倒な複数箇所への転記作業はまとめて自動化!
第11回 活用事例 PADで四則演算!
第12回 活用事例 条件分岐を使いこなせ!エラーを減らすフロー設計

関連記事

エラーを減らすフロー設計

PADで四則演算

【続々】複数個所への転記はまとめて自動化