【UiPath】「セルに書き込み」を理解する【初心者】
UiPathの学習追体験記事です。
※あくまで学習中の脳内を記事にしたものなので、この記事で書かれてあることが”正しい”とは限りません。
参考:学習効率本5巻 「知識の自作」
0.動機

情報をExcelやスプレッドシートにまとめる作業がめんどくさい。どうにか効率よくできないか。
と思っていたところ、UiPathでExcelを操作できると知ったため、とりあえずやってみた。
まずは、Excelの基本的な操作「セルに書き込み」アクティビティを覚えることで、UiPathからExcelを操作することに慣れていきたい。
1.全体像理解
全体像理解とは、理解する項目の位置づけを把握すること。
階層構造(垂直的)
「セルに書き込み」アクティビティは、利用可能アクティビティの1つ。
利用可能の階層構造から「セルに書き込み」アクティビティがどの階層にあるかを確認する。
利用可能>アプリの連携>Excel
上記の階層に「セルに書き込み」アクティビティがあった。

「アプリの連携」の中にExcelがあった。ということは、GoogleスプレッドシートをUiPathから操作したい場合は、UiPathとGoogleのアプリが連携可能かどうかを調べたら良いのかもしれない。
検索キーワードは「UiPath アプリの連携」で調べると、他に連携可能なアプリが分かるかもしれない。
同階層(水平的)
同じ階層にどのようなアクティビティがあるか確認する。
そして、「セルに書き込み」アクティビティと類似のアクティビティ、相違のアクティビティを主観的に決める。
そうすることで、「セルに書き込み」アクティビティを理解した後に、類似・相違アクティビティの機能を予想できる状態になる。
・類似アクティビティ
「セルに書き込み」アクティビティの類似アクティビティとして、「範囲に書き込み」アクティビティを設定した。

アイコンで類似と相違を考えると良いかも。今回は「青色セル」アイコンを類似アクティビティとしてみた。
・相違アクティビティ
「セルに書き込み」アクティビティの相違アクティビティを以下とした。
・セルの数式を読み込み
・セルの色を取得
・セルを読み込み
・列を読み込み
・行を読み込み

「セルに書き込み」アクティビティの逆が上記の相違アクティビティとすることで、「セルに書き込み」アクティビティの機能を理解できれば、相違アクティビティの機能もある程度理解したことになりそうだ。
2.機能理解
機能を理解する上で2つのアプローチをとる。
1つ目は設定項目の理解
つまり、プロパティの理解
2つ目は実際の動作の確認
つまり、予想と結果を確認する作業
プロパティ
プロパティの対応関係と扱えるデータ型を見てみる。
・対応関係
プロパティの項目とパネルに表示されている項目の対応関係を見る。
特に気になる部分はない。
・扱えるデータ型
プロパティの項目ごとに扱えるデータ型を調べた、結果は以下。
項目 | データ型 |
シート名 | String型 |
範囲 | String型 |
プライベート | Boolean型 |
値 | String型 |
表示名 | String型 |

「値」はString型なのか、、Excelで数字を扱う場合はどうしたら良いのだろう。
また、String型とint32型の両方を使用できる項目やデータ型はあるのだろうか。
たしか、「メッセージボックス」アクティビティのテキスト欄は両方扱えた。
動作確認
動作確認を行う。
「セルに書き込み」アクティビティは、「Excelアプリケーションスコープ」アクティビティの中で動作するため、下記画像のようになる。
上記画像の設定で実行。
test.xlsxファイルのSheet1のA1セルに「スタート」という文字列が記入されるはず。
予想通り。
上書きはできるか。
同じ場所に「ストップ」という文字列を書き込む。
上書きされた。
他のセルに書き込んでみる。
A2セルに書き込む。
書き込まれた。
複数のセルに書き込めるか。思いつきで以下画像のようにして、実行した。
エラー。

B3B1という範囲はあるはずがない。複数範囲指定は、一旦忘れる。
書き込むシートを変更してみる。
シート名を「Sheet2」に変更。
test.xlsxファイルに「Sheet2」は存在しないため、新しく作成されるはず。
「Sheet2」が新しく作成され、指定のセルに設定した文字列が記入された。
「セルに書き込み」アクティビティでDataTable型を記入できるかやってみる。扱えるデータ型はString型なので、エラーとなるはず。
エラーとなった。
「データテーブルを出力」アクティビティを使って、DataTable型からString型に変換して、セルに書き込んでみる。
エラーはない。実行。
指定した1つのセルに、すべて記入された。
話題を変える。「セルに書き込み」アクティビティでint32型が本当に使用できないか試す。
やはり、エラーとなった。
Excelに数式を記入することはできないのか。
試しに文字列で数式を書き込んでみる。
エラーはない。
「=123+123」がそのまま表示されるのか。
いや、計算された。

書き込み先のルールが適用されるのだろう。
ということは、書き込むセルを指定する場合に「〇:〇」のように記入することで、複数のセルに記入できるのではないか。
「A1:A3」と指定。
実行。
指定通りになった。
「〇,〇」はどうだろう。
実行。
記入された。
シートも同様にやってみる。
Sheet1とSheet2のC1セルに記入されるのだろうか。
「Sheet1,Sheet2」というシートが作成された。
Sheet1とSheet2を用意した状態でも実行してみたが、上記同様に「Sheet1,Sheet2」というシートが作成された。
「Sheet1:Sheet2」でやってみる。
実行中にエラーが出た。シート名に「:」は使用できないらしい。

複数シートに記入する場合は他のアクティビティを使用する必要があるのだろう。
話をセルの複数選択に戻す。
セルの複数選択ができたということは、DataTable型を扱えたりしないだろうか。
変わらずエラー。

「セルに書き込み」アクティビティにDataTable型を記入するのはあきらめよう。
Excelに関数を書き込めるかやってみる。
SUM関数で試す。
正しく記入された場合は「400」と表示されるはず。
「400」と表示された。関数を書き込めるようだ。
セル指定なしに自動で合計が表示されるかやってみる。
「=SUM」では思ったように表示されない。
「SUM」は「SUM」と表示されるだけ。
「=SUM(:)」「=SUM()」は、実行中にエラーとなった。
動作確認 まとめ
動作確認で分かったこと
・記入されたデータはExcelのルールにしたがって表示される
・範囲指定してセルに書き込める
・「セルに書き込み」アクティビティにDataTable型は記入できない

「セルに書き込み」アクティビティでは、String型しか記入できないが、String型で書き込んだ数字や関数が書き込んだ先のExcelファイルでは正しく数字・関数として扱われていたのには驚き!
逆にExcelファイルをUiPathに読み込む際は、どのような型で読み込まれるのかが気になるところ。
ExcelファイルのA1セルが「=1+1」で計算後の「2」が表示されているとして、それをUiPathで読み込んだ場合、String型の「2」なのか、Int32型の「2」なのか。
3.疑問
疑問①
「範囲に書き込み」アクティビティがあるにもかかわらず、「セルに書き込み」アクティビティで範囲指定して書き込めてしまった。「範囲に書き込み」「セルに書き込み」アクティビティの相違はなにか。
疑問②
ExcelファイルをUiPathに読み込んだ場合、データ型はどうなるのか。
疑問③
String型とint32型の両方を使用できる項目やデータ型はあるのだろうか。
4.参考文献

コメント