Excelのデータを繰り返し入力する処理を作る記事カテゴリUiPathサービス/ソフト記事タグRPAUiPathUiPath(ユーアイパス)で経費精算処理を自動化するワークフローの続きを作成していきましょう。Excelから読み取ったデータをデモアプリに入力する繰り返し処理を中心に作成します。【できるUiPath】は注目のRPAサービス「UiPath」を使って、RPAのワークフローを作るための基本操作から、実際に業務をRPA化する実践テクニックまでを解説する連載です。2ワークフローの続きを作成していきましょう。ここからは、Excelから読み取ったデータをデモアプリに入力する繰り返し処理を中心に作成します。入力する繰り返しの回数を決めるためのカウンターと呼ばれる変数を設定しましょう。この値を次の[繰り返し(各行)]アクティビティの中で1つずつ増やすことで、Excelの行を1つずつ進めながら処理を行うことができます。1[代入]を追加する2変数を指定するHINT[代入]って何?[代入]は、変数に値を代入するためのアクティビティです。いることから分かるように、右辺の値を左辺に代入します。このため、左辺に変数を指定し、右辺に値や計算式を指定します。"」で囲む必要がありましたが、変数や数値を指定するときは不要です。"」を含めると文字列として認識されてしまうので注意しましょう。HINTExcelの見出しに注意しようここでは、カウンターの値を処理対象のExcelの行に相当させる必要がありますが、Excelの表の1行目は見出しとなっています。このため、カウンターの初期値は見出しの1ではなく、実際に値がある2からスタートさせる必要があります。Explorerを起動]ボタンをクリックすると、操作対象のアプリやボタンを識別するためのセレクターを確認したり、セレクターを編集したりできます。Explorerでセレクターを確認し、必要に応じて編集しましょう。カレンダーコントロールなどの特定の日付のセレクターを確認することで、日付指定の規則性を判断し、特定の日付を自動的に選択する仕組みを考えたりもできます。テーブルの値の繰り返し処理Excelの表には、通常、複数のデータが記録されています。したデータを1行ずつ順番に処理したいとき(もしくは、繰り返し指示を出したいとき)は[繰り返し(各行)]を使います。1[繰り返し(各行)]を追加する2操作対象のデータテーブルを指定するHINTアクティビティの階層に注目しよう手順1で「各」で検索すると、「繰り返し(各行)」と「繰り返し(コレクションの各要素)」が見つかります。似た機能が表示されたときは、アクティビティの親階層に注目します。[繰り返し(各行)]の親階層は[データテーブル]なのでデータを処理するためのものと分かりますが、[繰り返し(コレクションの各要素)]は[コントロール]で汎用的な処理に使うものとなります。HINT繰り返し処理はいろいろある繰り返し処理には、[繰り返し(各行)]以外にも、上のHINTで紹介した[繰り返し(コレクションの各要素)]や[繰り返し(後判定)]などもあります。Activitiesガイドで、用途や使い方を確認しておくといいでしょう。「繰り返し(各行)」の中(Body)に処理を追加しましょう。最初の列のデータを「タイトル」、次の列のデータを「種別」、といったように順番にデモアプリに入力するといった処理を行数分繰り返します。1[クリック]を追加する2クリックする場所を指定する3[文字を入力]を追加する4入力先を指定する5タイトルに入力する変数を指定するHINT「繰り返し(各行)」の処理をイメージしてみよう「繰り返し(各行)」では、Excelの表のデータを読み込んだDataTable型変数(ここではtransactions変数)の値を順番に処理します。DataTable型変数の値を処理するというと少し分かりづらいかもしれませんが、結果的には下の画面のようにExcelの表を1行ずつ繰り返し処理していると考えるとイメージしやすいでしょう。HINT画面上に入力するときは[文字を入力]を使うアプリの入力欄などに、文字や数字を入力したいときは、[文字を入力]というアクティビティを使います。使うアクティビティなので、[お気に入り]に登録しておくといいでしょう。HINTレコーディングで作成したいときはもしも、このレッスンと同じ処理をレコーディングで作成したいときは、レッスン5の手順7と同様にダミーの値を入力してアプリを操作し、レッスン7を参考にダミーの値を変数に置き換えます。「繰り返し(各行)」などの処理はレコーディングでは作成できないので、「繰り返し(各行)」のBodyに登録する処理をレコーディングするという形態になります。Studioでの作業中に、「!」のマークが表示されることがあります。これは、入力内容などに不備がある場合に表示されます。変数名や型が違っているなど、何か問題があるので、このマークが表示されたときは注意深く確認してみましょう。HINT「row(0)」と、ゼロからスタートするDataTable型変数に格納されている値を指定するときは、変数の後に「row(0)の」ように()で値の番号を指定します。この値は0からスタートするので、最初の値を指定するときは、「row(0)」と指定します。エクセルの表に見出し行があり、かつ「範囲を読み込む」で「ヘッダーの追加」がチェックされているときは(標準でオン)、「(row(0))」と列の番号で指定する代わりに、「(row("タイトル"))」のように見出しで値を指定することもできます。HINT「.ToString」って何?手順5で指定している「row(0).ToString」は、「row(0)」に格納されているデータを「.ToString」で文字列に変換するという意味です。Studioでは、格納先の変数の型に合わせて、適宜データを変換する必要があります。HINTプルダウンメニューは[項目を選択]を使うアプリの入力欄の中には、一覧から入力する値を選択するタイプのものもあります。した操作を自動化したいときは、[項目を選択]アクティビティを使って指定します。6[項目を選択]を追加する7選択先を指定する8選択項目の変数を指定する9残りの処理を追加するHINTデモアプリの選択肢と同じ文字列を指定するリストボックスから候補を選択する操作を自動化するときは、入力先となるアプリの候補にある選択肢と同じ文字列を[項目を選択]に指定する必要があります。手順8では、入力する値として[row(1).ToString]と、Excelから読み込んだ行データの2列目を指定していますので、その元となるExcelの表に文字列を入力するときに、必ずデモアプリの選択肢と同じ文字列を入力しておきましょう。HINTアプリによっては[画像をクリック]でボタンを指定するフラッシュで作成されたアプリなど、通常の[クリック]アクティビティでは指定できないボタンをクリックしたいときは、[画像をクリック]アクティビティを使って、ボタンをイメージとして認識させてみましょう。「繰り返し(各行)」の処理2:画面上のデータの取得デモアプリでは、データを登録すると、その処理固有のコードが出力されます。画面上のコードを取得し、Excelの表に書き戻しましょう。1[アンカーベース]を追加する2[要素を探す]を追加する3文字列を指定する4[テキストを取得]を追加する5取得したい文字列を指定する6[テキストを取得]の値を変数に格納する7[1行を書き込み]を追加するHINT[アンカーベース]で目印を指定する手順1で追加している[アンカーベース]は、画面上の要素を検索するアクティビティです。左側で合致する画面要素を見つけ、そこに右側の処理を適用します。ここで利用するデモアプリでは、[コード:40]のように、「コード:」という文字列に続く数字を取得したいので、左に[要素を探す]のアクティビティを配置して「コード:」という目印を検出させ、右側に[テキストを取得]のアクティビティを配置してそれに続く文字列(実際のコード番号)を取得します。HINTFINDとGETを入れ間違えないように注意[アンカーベース]では、左側の[アンカー]部分に目印を検索する処理を、右側の[ここにアクションアクティビティをドロップ]部分に目印を見つけたときに実行する処理を配置します。左右を間違えると思い通りに動作しないので、間違えないようにしましょう。HINT[テキストを取得]の値の格納先はプロパティで指定する手順6の[テキストを取得]では、取得した値の格納先をプロパティパネルで指定する必要があります。[出力]の[値]が、取得した値を示すプロパティになるので、ここに格納先の変数(ここではtransactionId)を指定します。変数を新たに作成するときは、[Ctrl]+[K]キーを押して指定することを忘れないようにしましょう。HINT変数を確認しておこう手順6で作成するtransactionId変数は、[変数]パネルから確認できます。変数が正しく作成されているかを確認しましょう。ここでは変数の設定を変更する必要はありませんが、処理内容によっては、変数の型やスコープ(有効範囲)を変更する必要があります。HINT「1行を書き込み」って何?[1行を書き込み]は、指定したデータを[出力]パネルに書き出すためのアクティビティです。Studioの[出力]パネルを開くと出力を確認できます。省略しても全体の処理に影響はありませんが、処理の途中結果をチェックすることなどができるので便利です。HINT間違った場合は?入力した文字列を削除した後、再度[Ctrl]+[K]キーを押してから入力し直します。「繰り返し(各行)」の処理3:取得したコードのExcelへの出力アンカーベースで取得したコードをExcelの表に書き戻します。書き込み先のセルは、列は「"E"」と固定で指定し、行はcounter変数で順次指定します。1[セルに書き込む]を追加する2変数の値をセルに書き込む3[代入]を追加してカウンターを増やす4[クリック]を追加する5クリックする場所を指定するHINT[counter]変数が現在処理している行を示す[counter]は、ワークフローの最初の部分で初期化した変数です。counterの値がExcelの行番号に相当しています。初期化時に設定した値が「2」なので、「繰り返し(各行)」の最初の処理では、Excelの2行目が書き込み先として指定されます。「繰り返し(各行)」を繰り返す際に、値が1つずつプラスされていくため、処理対処の行も1つずつずれていくことになります。HINT[セルに書き込む]って何?[セルに書き込む]アクティビティは、Excelの特定のシートの特定のセルに対してデータを書き込むためのアクティビティです。手順2のように、ワークシート、セル、値を指定して利用します。[セルに書き込む]を使うには、事前にExcelファイルを開いておく必要があるので注意しましょう。HINT処理が繰り返されることを意識しよう「繰り返し(各行)」を使った処理では、処理が繰り返されることを常に意識する必要があります。データの入力やコードの書き戻しといった一連の処理が終わったら、次のレコードで同じ処理をしなければならないため、手順5で忘れずに[戻る]をクリックする処理を追加して、アプリの画面も次の処理を開始できる状態に戻しておきます。HINTカウンターを使わずに書き込み先セルを指定するにはここではcounter変数を使って、画面上から取得したコードを書き込むセルを指定しましたが、counterではなく、transactions(Excelのワークシートを読み込んだDataTable)から、書き込み先のセルを特定することもできます。具体的には、[セルに書き込む]で「"E"+(transactions.Rows.IndexOf(row)+2).ToString」と指定します。これは、transactions変数の現在処理している行の行番号を取得し、そこに2を追加(0からスタートしているため+1し、さらに見出し行があるため+1する)し、「.ToString」で文字列に変換するという意味です。この場合、ワークフローの冒頭でcounter変数を定義したり、「繰り返し(各行)」の最後でcounterを+1する処理は必要ありません。HINTブラウザーは自動で閉じないすべての処理が完了した後、[タブを閉じる]アクティビティを使って、デモアプリが表示されているブラウザーを自動的に閉じることもできます。RPAによる自動化では、人間の確認が非常に重要です。アプリやExcelを開いたままにしておくことで、入力された情報を人間が確認できるようにしておきましょう。Point基本的なアクティビティの使い方を身に付けようここでは、[代入]や[文字を入力]、[範囲を読み込む]、[ブラウザーを開く]、[繰り返し(各行)]、[アンカーベース]、[1行を書き込み]などの基本的なアクティビティを手動で組み合わせて経費精算処理を自動化しました。最初は、アクティビティの役割などが分からないため、難しいと感じてしまうかもしれませんが、ここで紹介した例は、いろいろな自動化処理に応用できる汎用的なものです。1つずつ確実に身に付けていけば、多くの処理を自動化することができるでしょう。Twitter)でシェアFacebookでシェアはてなブックマークに追加Pocketに追加リンクをコピーリンクをコピーしました!この記事が気に入ったらいいね!しようできるネットから最新の記事をお届けします。まさし)1971年東京都出身のフリーライター。雑誌やWeb媒体を中心にOSやネットワーク、ブロードバンド関連の記事を数多く執筆。