前回はUiPath Studioを使用して英単語リストをエクセルで作成しましたが、今回はUiPath StudioXを使用して同様のリストを作成してみます。 UiPath StudioXは、ビジネスユーザー向けの開発ツールで、プログラミング知識がないユーザーでもオートメーションの作成ができるのが特徴です。Uipath StudioとStudioXの違いについてはこちらを参照ください。 まずはエクセルのA列に調べたい単語を用意します。シート名はSheet1とします。この時点でこのエクセルファイルのバックアップを取っておきましょう。フローチャートを繰り返し実行している間に、万が一ファイルが壊れる場合に備えておきます。 次にStudioXを立ち上げ、空のプロジェクトを作成します。 画面中央にあるデザインパネルの中あるここにアクティビティをドロップの +マークをクリックすると、追加可能なアクティビティが表示されるので、Excelファイルを使用をクリックします。また、画面左のアクティビティパネルの中から画面中央に表示されている+マークにドラッグアンドドロップすることも可能です。 ちなみに、StudioXにあらかじめ定義されているアプリケーションをカードと呼びます。エクセルが無事に追加出来たら、先ほど作成した英単語リストファイルを選びます。 さらにその下にあるここにアクティビティをドロップの +マークをクリックして、読み込んだファイルに対するアクティビティを設定しますが、その前に、 ウェブブラウザーを立ち上げ、英単語を調べるサイトを呼び出します。ここで注意しなければならないのは、そのウェブブラウザーにUiPathの機能拡張がインストールされていることです。もしまだの場合は、ホームからツールをクリックすると、機能拡張のインストールが可能なアプリケーションのリストが表示されるので、ここで選んでインストールを行います。 ロボットがエクセルを操作する場合、エクセルにも機能拡張をインストールする必要があります。もしまだの場合、ここでインストールしておきましょう。 インストールが正しく完了すると、UiPathのアイコンが表示されます。 ウェブブラウザーに、英単語を調べるサイトを呼び出したら、一度単語を調べて、単語の意味を表示させます。UiPathはその画面から続けて意味を検索します。 なぜそうするかというと、サイトのトップ画面と検索結果の画面の構成が違う場合、UiPathが認識できない可能性があるからです。 次は、StudioXの中のExcelファイルを使用のカードの中のここにアクティビティをドロップの +マークをクリックして、アプリケーション/ブラウザーを使用のカードを追加します。 追加したら、ブラウザーをStudioXのすぐ背面に呼び出しておきます。そして、その中の自動化するアプリケーションを指定をクリックします。 アプリケーションを選択するモードになるので、ブラウザーが青色に選択したらクリックします。 その後は、アプリケーション/ブラウザーを使用の中にExcelの繰り返し(各行)のアクティビティを追加します。さらにそのアクティビティの中の対象範囲でSheet1[シート]を選択します。エクセルファイルを読み込んだ時点でシート名、ヘッダーも自動的に読み込まれます、便利ですね。 さて今度は、エクセルの中の単語を順番にウェブサイトに入力していきます。Excelの繰り返し(各行)のアクティビティの中に文字を入力のアクティビティを追加します。 さらに、画面上でターゲットを指定をクリックし、ウェブサイトの単語を入力するフィールドを指定します。 緑色の枠が入力フィールドに来るように選択し、選択オプションのウインドウの中の確認のボタンを最後に押します。 そして、以下を入力のフィールドの+ボタンをクリックして、Aを選びます。エクセルファイルのA列に単語リストがあるので、ロボットはそこから単語を順番に入力していきます。 単語を入力したら、ロボットにエンターキーを押させます。下記のように+をクリックして、特殊キーからEnterを選びます。これで単語の意味が表示されているページへ移動できます。 次は単語の意味をウェブサイトから抽出します。上記のアクティビティのすぐ下に見える+をクリックしてテキストを取得のアクティビティを追加します。 そのアクティビティの中の画面上でターゲットを指定をクリックし、ウェブサイトに表示されている単語の意味を選択します。 さらに、アンカーを指定します。アンカーとは、指定した要素が毎回変化する場合、その要素のすぐそばにある変化しない要素を指定することで、ロボットが相対的に指定した要素を見つけられるようにします。アンカーは青色の枠なので、今回はすぐ左横にある主な意味を選んでアンカーとします。最後に確認をクリックします。 次は保存先を指定します。+をクリックして、CurrentRowからエクセル内で示すを選びます。エクセルファイルが開くので、B列のセルをクリックして、Confirmをクリックします。 これでB列に単語の意味が記入されていきます。 以上で準備は完了です。画面中央上の実行ボタンを押してオートメーションを走らせてみましょう。 どうですか。エクセルのB列に意味が表示されていれば成功です。 もし、単語とその意味がちぐはぐになっている場合や、うまく意味が抽出できない場合、文字を入力のアクティビティより早くテキストを取得のアクティビティが走ってしまっている場合があるので、テキストを取得のプロパティで実行前の待機時間を設定して、時間を遅らせることで正しく意味を取得できるようになります。
Category: 基本操作
UiPathの基本操作について解説します。
英単語リストを作る
今回は、単語帳の意味を英和サイトで検索して、エクセルに記入するというのを自動化してみたいと思います。このアイデアは、ちょうどTOEICを受けようと思っていた矢先に考えたもので、この方が辞書を引いたりするより、簡単に単語の意味が調べられるからです。 まず、エクセルで単語のリストを作ります。エクセルのAの列に調べたい単語を入力します。この時点でこのエクセルファイルのバックアップを取っておきましょう。フローチャートを繰り返し実行している間に、万が一ファイルが壊れる場合に備えておきます。 UiPathで新しいフローチャートを開きます。そこに空のシーケンスを追加し、ダブルクリックしてそれを開いた上で、アクティビティのExcelアプリケーションスコープを追加します。続けて、そのアクティビティの中に自動的に作られる実行のシーケンスの中に、アクティビティである列を読み込みを追加します。 Excelアプリケーションスコープには先ほど作成したエクセルまでのパスを入力します。また、列を読み込みでは、単語が書かれているシートの名前を入力します。 ここで新しい変数を作成します。名前はdataoutputとします。変数の型ですが、デフォルトでは表示されていないため、型の参照から検索します。 検索画面で、System.Collections.Genericで検索し、IEnumerable<T>を選びます。また、ドロップダウンメニューでObjectを選びます。 上記の変数作成が終わったら、列を読み込みの出力の項目に変数の名前であるdataoutputを入力します。 次は繰り返し(コレクションの各要素)のアクティビティを追加し、先ほどの変数をコレクションのフィールドに入力します。ここで、現在のインデックス(下記図の赤枠)でInt32の変数を設定します。ここでは名前をcurrentIndexとします。 ちなみにこのアクティビティの中に自動的に作られるシーケンス(本体)をあらかじめクリックしてアクティブにしておきます。 次は、英和サイトを開きます。UiPathがこのサイトから英単語の意味をコピーして来ます。 まず最初に、何かの英単語をサイトで検索して、結果を表示させます。それを一番最初にやる理由は、英和サイトの場合、トップページと検索結果の画面が違うため、UiPathが検索フィールドを見つけられない可能性があるためです。 次はレコーディングに移ります。UiPathでレコーディングのWebを選択します。Webレコーディングのウインドウが出てきたら、英和サイトをクリックして、画面の一番手前に持ってきます。 レコーディングを開始します。まず、検索フィールドをクリックして、UiPathの入力値のウインドウに英単語を入力します。フィールド内を削除するにチェックを入れるのを忘れないように。 入力が終わったら、検索ボタンを押し、検索結果が出たところでエスケープキーを押してレコーディングを一度中断します。 Webレコーディングのウインドウのテキストから、テキストをコピーを選びます。 英単語の意味が表示されている場所をクリックして、テキストをコピーします。 ここでレコーディングを保存し、終了します。UiPathの画面に戻ると、繰り返し(コレクションの各要素)の中にレコーディングされた内容が追加されました。 とりあえず、エクセルに検索結果を書き込む前に、シーケンスが正しく動作するかチェックしてみましょう。テキストを取得のアクティビティのすぐ下に、1行を書き込みのアクティビティ追加します。TextフィールドにはTdと入力します。 また、検索フィールドに入力する英単語は、エクセルから引っ張ってくる必要があるため、文字を入力のアクティビティで以下のように入力します。item.ToString これで一度シーケンスを実行してみます。エクセルが開き、エクセルに書かれている英単語を一つずつサイトで検索をし、出力パネルに検索結果である英単語の意味が表示されれば、正しく実行されています。 ここでもし、エラーになる場合は、セレクターの編集が必要な場合があります。どのアクティビティでエラーになっているかは、付箋のような矢印が表示されます。下記の場合は、ブラウザーにアタッチの場所でエラーになっています。 そこで、ブラウザーにアタッチのセレクターの編集を表示させます。この場合は、サイトのタイトル名がマッチしないためエラーになっています。そこで、Titleのチェックボックスを外し、サイトのタイトルを無視して進めることにします。 シーケンスを実行し、エクセルの英単語の意味が出力パネルに表示されれば、問題なく動作しています。 さて、次はエクセルに英単語の意味を書き込んでいきます。 アクティビティの代入と、セルに書き込みを続けて追加します。代入には、左辺にはcurrentIndex、右辺にはcurrentIndex + 1と記入します。 セルに書き込みには、シート名にSheet1、範囲には“B”+currentIndex.ToString、値にはTdをそれぞれ入力します。 範囲の“B”+currentIndex.ToStringについての説明ですが、まず”B”はエクセルのセルのB列のことで、currentIndexは、繰り返しのアクティビティが現在何回ループしたかを入れておく変数名です。その変数の値はそのままでは出力できないので、ToStringで出力可能にします。 ここでシーケンスを実行し、エクセルに下記のように追記されれば成功、となります。
データスクレイピングとは
スクレイピングとは「削る事」、「こすること」という意味で、UiPathでは、ウェブサイトから特定のデータを取り出すことを意味します。例えば、商品のリストからタイトル、価格、在庫の有無を取得してテーブルデータやアレイなどの変数に保存したり、CSV形式ファイル出力したりすることが出来ます。 下記のショッピングサイトの場合、赤枠の情報を各商品ごとに取り出してみましょう(商品名、価格他はあくまで例です)。 まず商品一覧ページを呼び出しておきます。そして、データスクレイピングをクリックすると、取得ウィザードが表示されます。 次へをクリックして、商品名をクリックします。 次の画面で、次へを押した後、別の商品名をクリックします。 ここで、テキスト列名を入力します。リンクされているURL情報も取得したい場合は、URLを取得にチェックを入れ、URLの列名も入力します。 ここで、このページに表示されている商品名一覧が取得できました。次は価格を取得するので、相関するデータを抽出をクリックします。 今度は、価格の部分をクリックします。取得ウィザードで前回同様次へをクリックし、今度は別の商品の価格をクリックします。 取得ウィザードでテキスト列名を入力し、次へをクリックすると、先ほどの商品名リストに、価格が加わります。この繰り返しで、さらに在庫の有無をこのリストに加えます。 在庫の有無をリストに追加出来たら、終了を押します。 商品ページが複数に渡っている場合、下記ダイアログではいをクリックすることで、他ページに渡っている情報を取得できます。その場合は、はいを押す前に、商品サイトの次ページのリンクを画面に表示させてからはいを押してください。 これで、プレビューデータが表示されれば終了を押して完了です。
ワークフローをレコーディングする
UiPathを使うメリットは、やはり手作業を自動化するところにあります。そこでレコーディング機能を使えば、手作業をレコーディングして自動処理にできます。 今回は、ウェブサイトにログインをして、検索をするところまでを自動で行うよう設定したいと思います。 UiPathのレコーディング機能は左記の様にいくつかモードがあります。詳しくはこちらを参照ください。 まず、あらかじめサイトをウェブブラウザーで呼び出しておきます。今回はアマゾンにログインしたいと思いますので、呼び出しておきます。 レコーディングからWebを選びます。 レコーディングを押して開始します。 マウスを移動していくと、現在選ばれている箇所が青枠で表示されます。これはUiPathがセレクターとしてその個所を認識しているからです。 さらにマウスの現在の位置や、そのセレクターの大きさの情報が表示されます。 それでは、アカウント&リストをクリックしてログインの画面に移りましょう。クリックしてから、ログインの画面が表示されるのに数秒以上かかるので、気長に待ちましょう。 ログイン画面が表示されたら、メールアドレスまたは携帯電話番号を入力するフィールドを1回クリックします。数秒後にUiPathの入力ダイアログが下記のように出てくるので、ここにメールアドレスを入力します。さらにフィールド内を削除するにチェックを入れます。全角入力モードになっている場合は、先に半角モードに切り替えておいてください。 入力後はエンターキーを押して、次へ進むを押します。 ここでパスワードを入力しますが、パスワードを入力とフィールド内を削除するにチェックを入れます。 入力後はエンターキーを押し、次へ進むをクリックします。 フィールド内を削除するのオプションは、UiPathが一度フィールド内を削除し空欄にしてから、自動入力を行います。これは、すでに何かが入力されていた場合には、その後に続けて入力されるのを防ぐ機能です。 パスワードを入力のオプションは、入力箇所が非表示になります。 レコーディングを一時中断したい場合は、ESCキー(エスケープキー)を押すと中断されます。再び再開したい場合は、レコーディングを押します。 ログインが完了し、トップ画面が表示されましたか?もしパスワード入力の後に電話番号確認等の画面が表示されたら、ESCキーを押してレコーディングを一時中断し、無事ログインが終わった時点で再びレコーディングボタンを押して再開してください。 検索フィールドを一度クリックして、好きなワードを入れてエンターキーを押して下さい。検索の候補が表示されますが、そのまま入力フィールド右横にある検索ボタンを押します。 最後にエスケープキーを押してレコーディングを終了します。 参考にしたサイトのリンクhttps://www.uipath.com/developers/video-tutorials/recording
繰り返し (後判定) (Do While)とは
このアクティビティは、 シーケンスは少なくとも1回は実行され、そして設定された条件を満たす間、処理を繰り返し実行します。 繰り返し (前判定) (While)とは、でも使用した果物リストを使います。 果物リスト, いちご, りんご, ぶどう, もも, グレープフルーツ, いちじく変数名 namelist、変数の型 System.String[]{“果物リスト”,”いちご”,”りんご”,”ぶどう”,”もも”,”グレープフルーツ”,”いちじく”} 果物を一つずつ数え、最初にももが出てきたら処理を終了したいと思います。果物を数えるので、numという整数の変数を作成します。規定値は0にします。 変数名 num、変数の型 Int32、規定値 0 ここで注意したいのは、リストの一番最初に果物リストという値が入っていることです。これは当然チェックする必要がないのですが、下記のDo Whileではスキップするようになっています。 変数の値は左から順番に数えていきますが、表示はされないものの、それぞれにインデックス番号が0から順番に自動的に割り当てられます。つまり、果物リストは0、いちごは1、りんごは2と続きます。 Do Whileを使って以下のように処理します。 まず本体シーケンスで、代入というアクティビティでnumの数の繰り上げをします。numの規定値は0なので、繰り上げて1となります。つまりnamelist(1)、いちごが、次の1行を書き込みのアクティビティで出力パネルに表示されます。 そして最後に条件で、判定を行います。 namelist(num) <> “もも” namelist(1)はいちごで、ももではないので、本体シーケンスが繰り返し実行されます。つまりnumの値が繰り上がり、namelist(2)、りんごという風に…。<> はこの条件では、もも以外という意味です。 そしてnamelist(4)が条件で判定された時点で処理は終了します。出力パネルには以下のように表示されます。 WhileとDo Whileの違いは、シーケンスを実行するタイミングです。 Whileは最初に条件で判定してから、条件が合えばシーケンスを実行します。 Do Whileは最初にシーケンスを実行し、その後に条件判定を行います。 Whilehttps://54blog.net/knowledges/while/ For Eachhttps://54blog.net/knowledges/foreach/ 値を代入するアクティビティhttps://54blog.net/knowledges/assign/ 参考にしたサイトのリンクhttps://docs.uipath.com/studio/lang-ja/docs/the-do-while-activity
繰り返し (前判定) (While)とは
このアクティビティは、設定された条件を満たす間、処理を繰り返し実行します。 例えば、以下の果物リストがあり、それがArray変数の中に入っています。 みかん, いちご, りんご, ぶどう, もも, グレープフルーツ, いちじく変数名 namelist、変数の型 System.String[]{“みかん”,”いちご”,”りんご”,”ぶどう”,”もも”,”グレープフルーツ”,”いちじく”} 果物を一つずつ数え、最初にももが出てきたら処理を終了したいと思います。果物を数えるので、numという整数の変数を作成します。規定値は0にします。 変数名 num、変数の型 Int32、規定値 0 果物は左から順番に数えていきますが、表示はされないものの、それぞれにインデックス番号が0から順番に自動的に割り当てられます。つまり、みかんは0、いちごは1、りんごは2と続きます。 繰り返し (前判定) (While)を使って以下のように処理します。 whileアクティビティの中の条件には、 namelist(num) <> “もも” とあります。これは、果物リストnamelistの中のnum番目がもも以外だったら本体の中の処理を実行せよ、ということになります。最初のnumの値は0なので、namelist(0)、つまりみかんですが、これは当然ももではないので処理を実行します。式の中の <> は、もも以外を表します。 上記の条件が合うと、1行を書き込みというアクティビティが実行されます。これは出力パネルに果物の名前が表示されます。 さらにその下の代入というアクティビティで、numの値を繰り上げます(プラス1)。 次はnamelist(1)はいちごで、ももではないので、出力パネルにいちごと表示され、続けてこの工程が繰り返され、namelist(4)のももになった時点で処理は終了します。 果物のももは出力パネルには表示されません。なぜならnamelist(4)のももが条件に合わないため、本体の処理を実行せずにwhileのアクティビティは終了するためです。 Whileに似ているDo whileと、For eachというアクティビティがあります。詳細は下記を参照ください。 Do whilehttps://54blog.net/basic-operations/do-while/ For eachhttps://54blog.net/knowledges/foreach/ 参考にしたサイトのリンクhttps://docs.uipath.com/studio/lang-ja/docs/the-while-activity#
繰り返し (コレクションの各要素) (For Each)
このアクティビティは、配列、データテーブル等の各要素を個々に取り出して処理をする場合に用いられます。 例として、各西暦がうるう年かどうか判定をする場合、このアクティビティを使って以下のように処理ができます。 まず、西暦表である変数を作成します。変数の型はArray of [T]を選び、OKを押すと、整数配列のSystem.Int32[](変数パネルにはInt32[]と表示されます)が作成されます。 続いて規定値にブラケット{ }で囲んだ中に1995年から2020年までをコンマで区切って入力します。またこの変数名をnamelistとします。 繰り返し (コレクションの各要素)は、namelistから西暦を一つずつ取り出し、itemに代入します。そして代入した値を 条件分岐で4で割り、割り切れれば出力パネルにXXXX is a leap year(XXXX年はうるう年です)と表示されます。出力結果は以下のようになります。 参考にしたサイトのリンクhttps://docs.uipath.com/studio/lang-ja/docs/the-for-each-activity
未読メールの確認
この章では、未読メールに特定の表題がある場合、ポップアップメッセージを表示させる、というワークフローを作っていきたいと思います。 メールに関するアクティビティは以下になります。 マイクロソフトのOutlookをメールの送受信ソフトとして使っている場合、UiPathのワークフローの作成がより簡単になります。今回は、すでにOutlookにダウンロードされている未読メールが対象になります。 まずOutlook メール メッセージを取得というアクティビティをデザインパネルに追加します。 追加した後は、下記の通りプロパティを設定します。未読メッセージのみにチェックを入れる。これで未読メッセージのみをチェックします。メールフォルダーの項目に、Outlookでメールを受信するメールフォルダー名を入れる。受信箱のフォルダー名は違う場合があるので、Outlookで確認してください。引用符で囲むのを忘れずに。メッセージの項目で、新しい変数を作成します。入力フィールドをマウスで右クリックして変数の作成を選ぶか、キーボードのコントロールキー + kを同時に押して変数名messagesを入力します。この変数の型は自動的にList<MailMassage>に設定されます。 次に、フロー条件分岐を追加し、 Outlook メール メッセージを取得のアクティビティとつなげます。 そして、繰り返し(コレクションの各要素)というアクティビティを追加します。これはeachと検索をすると見つかります(英語版ではFor Eachというアクティビティ名になっているため)。このアクティビティを下図のようにフロー条件分岐のTrue(左面)につなぎます。このアクティビティの詳細を知りたい方はこちらをご覧ください。 メッセージボックスのアクティビティを繰り返し(コレクションの各要素)の下に追加し、つなげます。 さらに、メッセージボックスを追加し、フロー条件分岐のFalse(右面)につなぎます。 このワークフローは、下記の順に進んでいきます。 1.Outlook メール メッセージを取得で、未読のメッセージのみを変数に入れる。 2.フロー条件分岐で未読のメッセージがあるかどうかを判断し、ある場合(True)は繰り返し(コレクションの各要素)に移る。ない場合(False)は、メッセージボックスでメールがないと表示し、ワークフローは終了する。 3.繰り返し(コレクションの各要素)の中に条件分岐を設け、そこでメールの表題に特定のキーワード(ここの例ではテストメール)があるかどうかをチェックする。メールがあった場合は数をカウントしていく。 4.最後にメッセージボックスでカウントした数を表示する。 さて、フロー条件分岐のプロパティで条件という項目があるので、そこにmessages.Count > 0と記入します。 これはつまり、さっき作成したmessagesの変数の中に、Countでいくつ値が入っているかを数えて、その結果が0以上であればTrueを、0以下であればFalseを返すという意味です。左から順番に読んでいけば、そんなに難しくないですよね。 次は、繰り返し(コレクションの各要素)のダブルクリックして開き、プロパティを設定します。 コレクション(下図の左側赤枠内)に先ほど作成した変数のmessagesを入力します。 プロパティのTypeAugument (下図の右側赤枠内) ですが、デフォルトではObjectが選択されています。これをSystem.Net.Mail.MailMessageに変更する必要がありますが、ドロップダウンメニューをクリックしてもその項目は出てきません。そこで、型の参照…を選択します。 型のリストが表示されましたね。ここでmailmessageと入力をして検索をかけると、下記のように候補が出てきます。ここでSystem [4.0.0.0]とSystem.Net.Mailの下にあるMailMessageを選択します。 なぜ上記のような変数を選択しなければならないのかというと、Outlook メール メッセージを取得で作成したmessagesという変数の型がList<MailMassage>で、それに合わせなければならないためです。ここを設定しないとエラーになり、正しく実行されません。 ここで2つの変数を作成します。変数名、messageCount、変数の型、Int32、規定値、0変数名、sentence、変数の型、String、規定値、“テストメール” messageCountという変数は、未読の特定のキーワードを含むメールの表題を数えるためのもので、sentenceは、その特定のキーワードを入れておく変数です。 次は、繰り返し(コレクションの各要素)の下にある本体のワークフロー内に条件分岐を追加します。 さらに、Conditionに以下を入力します。item.Subject.Contains(sentence) この意味は、messagesから繰り返しによって代入されたitemの中の、Subject(メールの表題)に、sentenceの中に代入されているキーワードのテストメールが含まれているか(Contains)、ということです。 ここで、代入というアクティビティを条件分岐のThenの枠内に追加します。 下図のようにアクティビティの左辺値(To)にmessageCountと、そして右辺値(Value)にはmessageCount + 1と入力します。 ワークフローが複雑になってきた場合、後でアクティビティの意味を見つけやすくするように、コメントを追加することが出来ます。これは目印のようなもので、実行されることはありません。 さて、ここで繰り返し(コレクションの各要素)の上の階層のフローチャートに戻ります。そして、そのアクティビティの下の方に追加したメッセージボックスをダブルクリックして開きます。 このアクティビティに、下記のように入力します。sentence + “のキーワードを含む未読メールが” + messageCount.ToString +…
エクセルのデータ編集
この章では、UiPathを使って簡単なエクセルファイルのデータを編集したいと思います。 UiPathにはエクセルの中のデータ編集が出来る様々なアクティビティが用意されています。エクセル内のデータを読んだり、書いたり、列、行の挿入、削除、またはマクロを実行したりなど…。 これらのアクティビティを使って、下記のエクセルの社員リストに新たなメンバーを追加しましょう。それでは、このリストのワークシートの名前をSheet1と記入します。 新たに追加する社員をエクセルの次のワークシートに記入します。ワークシート名はSheet2とし、今回はそれをSheet1の社員リストに追加しましょう。 まずはこのリストをエクセルのテーブルに変換します。これをすることで、追加された項目をコード順などに並び替えることが出来るようになります。 エクセルメニューのホームから、テーブルとしての書式設定を選びます。テーブルのデザイン、選択範囲を選択するとテーブルに変換されます。その後エクセルファイルを名前をつけて保存して閉じます。 ここで大事なのは、テーブル名を入力することです。このテーブル名を元にUiPathがリストの並べ替えを行います。ここではテーブル名をTable1と入力します。 Ui Pathの新しい空のプロセスを開きます。そしてフローチャートを追加します。 デザインパネルからexcelアプリケーションスコープのアクティビティを検索します。excelと打っていくとアクティビティが見つかるので、それをデザインパネルに追加します。 追加したら、StartNodeとして設定(A)を選び、Excelアプリケーションスコープをダブルクリックします。 赤枠の入力フィールドに保存場所までのパスとエクセルのファイル名を入力します。あるいはプロパティのワークブックのパスのフィールドに入力します。引用符で囲むのを忘れないように! ここでエクセルのアクティビティから範囲を読み込むをドラッグアンドドロップで実行のワークフローの中に追加します。このアクティビティで追加する社員をUiPathに読み込みます。 次に、範囲を読み込むのプロパティのシート名に、追加する社員が記載されているワークシート名Sheet2を記入します。ここでワークシート名の記入がないと、UiPathがどこに情報を読みに行くべきかが分かりません。 ここで、Sheet2から読み込んだ情報をUiPathに保存しておくための変数を作成します。今回の場合、ひとつの値ではなく支社、電話番号など複数の社員の情報を保存するため、データテーブルという変数を使います。これで複数の値をひとつの変数に整然と並べて保存できます。これは例えでいうと、複数のビール瓶をビールケースに入れておくという感じでしょうか。 プロパティのデータテーブルの入力欄をマウスの右ボタンでクリックすると、メニューが出てくるので、そこで変数の作成を選び、変数の名前としてnewDTと入力します。 作成した変数を変数パネルで見ると、変数の型がDataTable(データテーブル)となっています。 ここで範囲を追加というアクティビティをドラッグアンドドロップして範囲を読み込むの下に追加します。これは変数の値を社員リストに追記する役割を果たします。 シート名のフィールドに引用符で囲んだ“Sheet1”と、データテーブルのフィールドに先ほど作成した変数のnewDTを引用符なしで入れます。newと入力していくと変数が表示されます。 ここまでの工程で、Sheet1のリストに社員を追加できました。しかし、ただ一番最後の行に追加されただけなので、社員コード順に並べ替えをしましょう。 そのための最適なアクティビティがテーブルを並べ替えです。さっそく範囲を追加の下に追加していきます。 テーブル名を“Table1”と、列名を“社員コード”とそれぞれ引用符で囲んで入力します。テーブル名は、この章の最初でエクセルのテーブルを設定した時につけた名前です。また列名はどの列を基準に並べ替えを行うかで、この場合は社員コードの列が基準になります。順序にあるAscendingは数字が若い順から並べられます。 これですべての設定は完了です。もしエクセルファイルを開いている場合は閉じて、さっそくファイルをデバッグをクリックして実行してみましょう。 エクセルが一瞬開いてすぐに閉じました。UiPathで特にエラーが出ていなければ作業は完了です。エクセルを開いてみると、リストに以下のように社員が追加されて、社員コード順に並べ替えられているはずです。 今回の例は小規模なので、エクセルで直接コピーアンドペーストで作業を終わらせた方が早いと思う方もいらっしゃるでしょう。この章ではどうやってUiPathを使って、エクセルの表を操作するかという基本を例を使って解説をしましたので、この例を応用すれば、他のエクセルファイルからのデータを追加することも可能になります。 参考にしたサイトのリンクhttps://www.uipath.com/developers/video-tutorials/excel-and-datatables-automation
コントロールフロー
前章で説明したフロー条件分岐を具体例を挙げて解説していきましょう。 うるう年かどうかを調べる それでは例として、入力した西暦がうるう年の場合とそうでない場合に、それぞれ別のメッセージを表示させてみましょう。 まずUiPathを立ち上げ、操作画面の説明、メッセージボックスの表示の2.新規プロジェクトの作成にあるように空のフローチャートを作成します。 まずは変数を作成しましょう。変数パネルを開き、変数名にyearと入力し、変数の型をInt32に設定します。変数がよく分からない方は、変数を使ってメッセージを表示させるを参照して下さい。 次に入力ダイアログというアクティビティをアクティビティパネルからデザインパネルに追加します。アクティビティが見つからない場合は、検索をかけると見つかりますので、それをドラッグアンドドロップします。 今後よく使うアクティビティは、そのアクティビティをマウスで右クリックして、お気に入りに追加ができます。 そして追加したデザインパネルにある入力ダイアログをマウスで右クリックし、Startnodeとして設定(A)を選択してワークフローを作ります。 入力ダイアログを1回クリックすると、入力ダイアログのプロパティがプロパティパネルに表示されます。そこで、ラベルの欄に“西暦を入力してください“と入れます。重要なのは、ラベルを引用符で囲むことです。 また、結果の欄に先ほど作成した変数のyearを入力します。ここは引用符で囲む必要はありません。 ラベルを入力する別な方法として、入力ダイアログをダブルクリックすると、直接アクティビティ内にラベルを入力できます。 次はフロー条件分岐をデザインパネルに追加します。追加したら、入力ダイアログの上にマウスカーソルを持っていくと、4つのドット(小さな四角)が各面に現れます。そこで下面のドットをドラッグしてフロー条件分岐に持っていき、ドロップすると(マウスボタンを離すと)、入力ダイアログとフロー条件分岐がつながります。 次は入力ダイアログで入力された西暦を調べます。うるう年かどうかを調べるには、西暦を4で割って余りが0かどうかでうるう年が分かります。例えば2020年を4で割った場合は余りは0になるので、その年はうるう年であり、2021年を4で割ると割り切れず余りが25になるので、うるう年ではないことが分かります。 そこで演算子であるmodを使い、割り算の余りを出力させます。下記をフロー条件分岐のプロパティの条件に入力します。 year mod 4 = 0 さて、ここで2つのメッセージボックスを追加します。メッセージボックスは前章ですでに使ったので、アクティビティパネルの最近という項目に表示されていてすぐに見つかると思います。もし見つからない場合は、例によって検索をかけてみてください。2つのメッセージボックスをデザインパネルに追加したら、それをフロー条件分岐のそれぞれ右下と左下に配置します。 ここでフロー条件分岐の上にマウスカーソルを置いてみてください。左面にTrue、右面にFalseが表示されましたね。 このドットをドラッグしてTrueは左下のメッセージボックスにつなぎ、Falseは右下のメッセージボックスにそれぞれつなぎます。つまりTrueとつながっているメッセージボックスにはうるう年であるメッセージが入力し、Falseとつながっているメッセージボックスにはその逆を入力します。 最終的に下図のようになります。 最後に、各メッセージボックスのテキストの欄にダイアログに出力するメッセージを入れます。メッセージボックスをダブルクリックし、ダブルクォーテーション(引用符)で囲んでメッセージを入れます。 さて、これで準備が整いましたのでメニューにあるファイルをデバッグを押して実行してみましょう!ダイアログが出ましたか? 西暦を入力してOKを押すとメッセージが現れましたね。 ただこれだと1回しかダイアログが現れません。そこでうるう年でない場合には、繰り返し入力ダイアログを表示するように設定してみましょう。 うるう年ではないメッセージボックスにマウスカーソルを持っていき、4面にドットが現れたら、右面のドットをドラッグして入力ダイアログの右面に持っていき、2つのアクティビティをつなぎます。 再度ファイルをデバッグを押して実行をしてみましょう。うるう年でない場合は再度入力ダイアログが表示されましたか? いかがでしたでしょうか。今回は簡単なワークフローを作成しましたが、フロー条件分岐を使えば、より複雑なワークフローを構築することも可能です。 参考にしたサイトのリンクhttps://www.uipath.com/developers/video-tutorials/control-flow