Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
200825 UiPathのすすめ第2部 Excel編 はなっちさん
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
RPACommunity
August 25, 2020
Technology
1.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
200825 UiPathのすすめ第2部 Excel編 はなっちさん
RPACommunity
August 25, 2020
More Decks by RPACommunity
See All by RPACommunity
201023 Automation Anywhere「A2019」を触ってみた Ayy
rpabank
0
1.1k
201023 DX Suiteを触ってみた Ayy
rpabank
0
1.1k
201023 RPA超初心者がWinActorにチャレンジしてみた ユーコさん
rpabank
0
660
201023 PowerPlatform はじめの一歩 みさみささん
rpabank
0
660
201023 アシロボで実際に沼ってみた たまいさん
rpabank
0
720
201018 RPAの本質とトレンド Mitz
rpabank
0
550
201006 僕がいまRPAで伝えたいことのすべて いろはまるさん
rpabank
0
510
201006 UiPath MVP 2019-2020 はなっち!さん
rpabank
0
490
201006 今からでも間に合う!UiPathトーク一気に振り返り たまいさん
rpabank
0
450
Other Decks in Technology
See All in Technology
BigQuery の Cross-cloud Lakehouse への歩み
phaya72
2
600
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
170
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
220
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
430
あなたの AI ワークスペースに、 専門コーダーを連れてくる - Amazon Quick Desktop 最新情報
kawaji_scratch
1
110
Dynamic Workersについて
yusukebe
2
630
運用を見据えたAIエージェント設計実践
amacbee
1
3.2k
いまさら聞けない人のためのAIコーディング入門
devops_vtj
0
130
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
260
AIにフローを作らせようとして挫折した話
hamatsutaichi
0
220
AI Testing Talks: Challenges of Applying AI in Software Testing: From Hype to Practical Use
exactpro
PRO
1
140
Rubyで音を視る
ydah
1
110
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Facilitating Awesome Meetings
lara
57
6.9k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
The browser strikes back
jonoalderson
0
1.2k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Mobile First: as difficult as doing things right
swwweet
225
10k
RailsConf 2023
tenderlove
30
1.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Transcript
UiPathのすすめ 2020年4月現在
UiPathの構成 基本形(Enterprise Edition) 標準形(Enterprise Edition) 拡張形(Enterprise Edition) Studio Studio Robot
Studio Robot Orchestrator Community Edition Studio Orchestrator Robot U i P a t h リ セ ラ ー 独 力 1. 個人のRPA開発者および小規模事業者向け。 2. ずっと無料で、STUDIOは2ライセンス。Attended Robots2台。 3. UiPathによる自動更新。UiPathフォーラムの無償サポート。 引用元(抜粋):https://www.uipath.com/ja/start-trial
このセミナーでの範囲 基本形(Enterprise Edition) 標準形(Enterprise Edition) 拡張形(Enterprise Edition) Studio Studio Robot
Studio Robot Orchestrator Community Edition Studio Orchestrator Robot U i P a t h リ セ ラ ー 独 力 1. 個人のRPA開発者および小規模事業者向け。 2. ずっと無料で、STUDIOは2ライセンス。Attended Robots2台。 3. UiPathによる自動更新。UiPathフォーラムの無償サポート。 引用元(抜粋):https://www.uipath.com/ja/start-trial
今後の展開 基本形(Enterprise Edition) 標準形(Enterprise Edition) 拡張形(Enterprise Edition) Studio Studio Robot
Studio Robot Orchestrator Community Edition Studio Orchestrator Robot U i P a t h リ セ ラ ー 独 力 1. Orchestratorは、野良ロボット対策、カスタムアクティビティ配 付、定時自動起動など、便利な機能がいっぱい! 2. コンピュータ名、ログイン情報などの設定が必要になります 引用元(抜粋):https://www.uipath.com/ja/start-trial
タイムスケジュール • 本セミナは、既にStudioのインストールが終了した方を対象に しています。一緒に作ってみましょう! • シリーズ開催の~かんたんロボット作成~などを受講してい ない方でも分かるように構成しています。でも完全フォロー アップレベルとはしていません。でも、付いてきてください!
UiPathのすすめ 1. 前回の復習 2. EXCEL関連の基本的な考え 3. EXCEL関連のアクティビティ 4. つくってみよう -1
今回作ってみるもの -2 かんたんな仕様書を書いてみよう -3 EXCELの操作の基本 -4 さて、ロボットの処理 5. 変数ってなんだ? 6. DataTable型って! 7. 振り返り
1. 前回の復習 2020年4月現在 割愛!
【処理概要】 ブラウザよりアクセスしたサイトから、外為両替相場情報を取得し、それを最終更新日のシートを持つEXC ELブックに転記する • かんたんな仕様書を書いてみよう <入力> InternetExplorer <出力> Excel <処理>
入力(型式、内容)を確認する どういうことをするのか確認する ⇒使うアクティビティを想像してみよう 出力(型式、内容)を確認する 5. つくってみよう-2 振返り
5. つくってみよう-5 • スタートから、右側の新規プロジェクト⇒プロ セスをクリックする。 振返り
5. つくってみよう-6 • 名前:「はじめてのUiPath」 場所:変更しない事をお勧めする 説明:書かなくてもよい…でもあった方がよい ※名前、説明は一度設定した後でも変更可能です 振返り
5. つくってみよう-9 • 画面の構成…習うより慣れる! プロジェクトパネル: ロボットのファイルを管 理 アクティビティパネル: ロボットを組み立てる 部品群
デザインパネル: ロボットにアクティビティを 搭載する。変数、引数を 定義する プロパティパネル: 搭載したアクティビティ のパラメタを設定する リボン:作成、保存、実行、レコーディング など 振返り
5. つくってみよう-20 変数(Variable)とは、一般的にプログラム言語において「値を入れておく箱」のような ものと言われます。 様々なデータを変数(箱)に中に入れることによって、中身が代わっても自由に引き出す ことができます。UiPathだけでなく、どのプログラミング言語においても必須の機能 のひとつですので、この機会に変数について理解しておきましょう。 https://uipath.site/basic/variables.html String 文字列(数字)を入れる型
Int32 数値を入れる型 (-2147483648から+2,147,483,647) 21億4748万… Int64 数値を入れる型 922垓3372京368億5477万… (-9223372036854775808から9,223,372,036,854,775,807) String[] 文字列型の配列 Boolean True/Falseを入れる型 DateTime 日付や時間を入れる型 Object オブジェクトを入れる型 DataTable EXCELシートを入れる型 変数A 変数B 変数X 変数B <スコープ … 変数の有効範囲> 変数X 変数C 変数Bは上位 の定義と被る 変数Xは同位の 定義と被らない "123"と123とでは意味が違う "123"は文字列(数字)としての"123"で あり、123は数値としての123である。 "123" + "456" = "123456" 123 + 456 = 579 振返り
5. つくってみよう-28 今アクティブなxamlファイルを デバッグ/実行する([F6] Or Ctrl+[F6]) このプロセスのメインに設定されているxamlファイルを デバッグ/実行する([F5] Or Ctrl+[F5])
➢ デバッグ ... 設定したブレイクポイントで止まってみたり、 アクティビティ毎の通過ログを取得できるけど、 トライ~キャッチは効かない ➢ 実行 ... デバッグのような事は出来ないけど、その分高速 振返り
5. つくってみよう-29 project.json メインは” Main.xaml“だ! Main.xaml シーケンスA.xaml シーケンスB.xaml これやって! これやって!
これやった! これやった! 動け! project.json メインは”NewMain.xaml“だ! Main.xaml シーケンスA.xaml シーケンスB.xaml これやって! これやって! これやった! これやった! 動け! これやって! NewMain.xaml ↓ファイルを実行 ↓ファイルを実行 ↓実行 ↓実行 今、アクティブなXAML 振返り
2. EXCEL関連の基本的な考え 2020年4月現在
Excelの手作業パタン • 別シートに転記するには、セルを選択し、コピー(Ctrl+c)して、 シートを変えて、セルを選択し、ペースト(Ctrl+v)する セル クリップボード Ctrl+c 手作業 Ctrl+v
Excelの手作業パタン • 別シートに転記するには、範囲を選択し、コピー(Ctrl+c)して、 シートを変えて、セルを選択し、ペースト(Ctrl+v)する クリップボード Ctrl+c 手作業 Ctrl+v
Excelの処理パタン • Excelブックの操作では、指定シートを対象に、 セルまたはレンジ(範囲)を読み込みできる(変数に格納) 列A 列B 列C DA1 DB1 DC1
DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型) セル 変数: C (GenericValue型) Col1 Col2 Col3 列A 列B 列C DA1 DB1 DC1 DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型) ▪ヘッダーの追加 □ヘッダーの追加 UiPath
Excelの処理パタン • Excelブックの操作では、指定シートを対象に、 セルまたはレンジ(範囲)を書き込みできる(変数に格納) 列A 列B 列C DA1 DB1 DC1
DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型) セル 変数: C (GenericValue型) ▪ヘッダーの追加 UiPath
違い • 手作業の場合は、セルの値だけでなく、 色、罫線など情報もコピーさせる(選択 できる) ⇒クリップボードには、色、罫線情報も 含まれている • UiPathのロボットの場合は、セルの値だ けで、色は別のアクティビティで取得、
設定。罫線は拡張アクティビティ。 ⇒この画面を表示させ、「クリック」アク ティビティを利用する
違い • 手作業の場合は、クリップボードを介在さ せてシート間をやりとりするので、コピー &ペーストがPairとなる 列A 列B 列C DA1 DB1
DC1 DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型) クリップボード(色情報あり) • UiPathのロボットの場合は、セル、範囲を 変数に保有するので、読み込み部分と書 き込み部分とはPairにする必要はない
3. EXCEL関連のアクティビティ 2020年4月現在
Excel系アクティビティの種類 1. ワークブック系 3rdベンダーが作成。 2. Excelアプリケーション スコープ系 MSの流れにそって作成。 ・ファイルを指定して、 1機能を実施
Excel系アクティビティの種類 1. ワークブック系 3rdベンダーが作成。 2. Excelアプリケーション スコープ系 MSの考えにそって作成。 ・ファイルを指定して、 その配下で複数機能を実施。
これが用意されていない! • 行の高さ変更、 列の幅変更 • シート名変更 • 罫線描画 • ピボットテーブル系
• グラフ系 • シート内でセルの置換
こうやって実現する! • 行の高さ変更、 列の幅変更 • シート名変更 • 罫線描画 • ピボットテーブル系
• グラフ系 • シート内でセルの置換 • Excelのショートカットを 「ホットキーを押下」ア クティビティを駆使す る • UiPath公式アクティビ ティの「かんたんExcel アクティビティパック」 を使用する https://connect.uipath.com/ja/marketplace/components/easy-excel-activity-pack
4. つくってみよう 2020年4月現在
今回作ってみるもの 青い銀行からダウンロードした「外国為替公示相場」と、請求CSVファイルを ① 結合し、 ② 円での金額に変換し、 ③ 変換できたものと、できないものとを新しいブックの別シートに転記保存する。 ④ その際、変換できたものの最終行には円での金額を設定する。
変数 入力 出力 DataTable型 変数 DataTable型 外国為替公示相場_7月3日.xlsx 20200704請求書.csv 20200704請求書.xlsx ① ② ③ ④
ファイルイメージ(入力) 外国為替公示相場_7月3日.xlsx 20200704請求書.csv CONNNPASSにアップしてありますので、ダウンロードしてお使いください
ファイルイメージ(出力) 外国為替公示相場_7月3日.xlsx 20200704請求書.xlsx 円金額=通貨コードで引いたMIDDLE * 数量 * 単価 円 金
額
手でやると… 1. 新しいファイルを開く 2. “Sheet1“を、 「CSVファイル名_OK」に改名する 3. “Sheet2“を、 「CSVファイル名_NG」に改名する 4.
「外国為替公示相場」を読み取り専用で開く 5. 請求CSVファイルを開く 6. CSVシートに最左端列に「行番号」を振る 7. CSVファイルの最右端列を「MIDDLE」とし、VLOOKUP関数を挿入する =Vlookup("通貨コード",[外国為替公示相場_7月3日.xlsx]外国為替公示相場_7月3日!$B:$E,4,FALSE) 8. CSVシートを「MIDDLE」 、 「行番号」でSORTする 9. CSVシートをAutoFilterし、 「MIDDLE」が"#N/A"でFilterを掛ける 10. "#N/A"でFilterを掛けたシートの中身を選択し、Ctrl+cする 11. 新しいファイルの 「CSVファイル名_NG」にCtrl+v(値だけ)する 続く 手作業
12. CSVシートをAutoFilterし、 「MIDDLE」が"#N/A"以外でFilterを掛ける 13. 「MIDDLE」の最右端列を「円金額」とし、 PRODUCT関数を挿入する = PRODUCT(数量,単価, MIDDLE) 14.
"#N/A"以外でFilterを掛けたシートの中身を選択し、Ctrl+cする 15. 新しいファイルの 「CSVファイル名_OK」にCtrl+v(値だけ)する 16. 「CSVファイル名_OK」シートを、 「行番号」でSORTする 17. 「CSVファイル名_OK」シートの、 「行番号」列を削除する 18. 「CSVファイル名_NG」シートを、 「行番号」でSORTする 19. 「CSVファイル名_NG」シートの、 「行番号」列を削除する 20. 新しいファイルを、 CSVファイル名.xlsxとして保存し、閉じる 21. CSVファイルを、保存せずに閉じる 22. 「外国為替公示相場」を閉じる 結構な手数が掛かる 続き 手作業 手でやると…
かんたんな仕様書を書いてみよう
【処理概要】 青い銀行からダウンロードした「外国為替公示相場」と、請求CSVファイルを結合し、円での金額に変換、別 のEXCELに転記保存しよう! <入力> Excel ⇒外国為替公示相場_7月 3日.xlsx CSV ⇒20200704請求書.csv <出力>
Excel 20200704請求書.xlsx <処理> 外貨両替相場の最左端シートを読み込む CSVをEXCELで読み込む CSV上の”通貨”と、 “通貨コード”とで突合する 通貨コードがあったデータと、 通貨コードがなかった データとで、保存するシートを分ける 通貨コードで引いたMIDDLE * 数量 * 単価を計算 通貨コードがあったデータに合計を転記する かんたんな仕様書を書いてみよう(1)
<入力> Excel ⇒外国為替公示相場_7月 3日.xlsx CSV ⇒20200704請求書.csv <出力> Excel 20200704請求書.xlsx <処理>
外貨両替相場の最左端シートを読み込む CSVをEXCELで読み込む CSV上の”通貨”と、 “通貨コード”とで突合する 通貨コードがあったデータと、 通貨コードがなかった データとで、保存するシートを分ける 通貨コードで引いたMIDDLE * 数量 * 単価を計算 通貨コードがあったデータに合計を転記する 【処理概要】 青い銀行からダウンロードした「外国為替公示相場」と、請求CSVファイルを結合し、円での金額に変換、別 のEXCELに転記保存しよう! いきなりこんなに は書けない! かんたんな仕様書を書いてみよう(2)
<入力> Excel ⇒外国為替公示相場_7月 3日.xlsx CSV ⇒20200704請求書.csv <出力> Excel 20200704請求書.xlsx <処理>
外貨両替相場の最左端シートを読み込む CSVをEXCELで読み込む CSV上の”通貨”と、 “通貨コード”とで突合する 通貨コードがあったデータと、 通貨コードがなかった データとで、保存するシートを分ける 通貨コードで引いたMIDDLE * 数量 * 単価を計算 通貨コードがあったデータに合計を転記する 【処理概要】 青い銀行からダウンロードした「外国為替公示相場」と、請求CSVファイルを結合し、円での金額に変換、別 のEXCELに転記保存しよう! ③どのフォルダに、 どんな名前、シートに、 どんな風に格納され ているか? ①どんな出力内 容にするか? ②突合条件、必要項目 があるか? かんたんな仕様書を書いてみよう(3)
EXCELの操作の基本
Excel操作の基本 • どこのフォルダに存在 Or 格納するか? • どのようなファイル名で存在 Or 保存するか? •
どのシート名で「読み込む」 Or 「書き込む」のか? • シート上、どんな事をするのか(「セル」 Or 「範囲」) • Excelアプリケーション スコープを使用する – 「読み込み」系アクティビティ – DataTable型として処理(結合、フィルタリング、マージ…) – 「書き込み」系アクティビティ – ブックを保存 – ブックを閉じる 事前確認項目 ロボット 6
ざっくりとした読み書き Excelブックを開き、シートの内容を、別のEcxelブックのシートに転記する データテー ブル型
ドラッグ&ドロップ先は? • アクティビティを掴んで、ゆっくりと、デザインパネル上にマウスを持って行く • (+)マークが現れた所にドロップされる!
実際に作ってみよう! • スタートから、右側の新規プロジェクト⇒プロ セスをクリックする。 円での金額に変換
Main メインロジックを構築するためのパレットとなる、 アクティビティパネルにある「シーケンス」をダブルクリック Or ドラッグ&ドロップする
アクティビティの「表示名」 各アクティビティの名前は、以下の理由から、改名した方がよい 1. 変数のスコープ範囲が分かりやすくなる 2. デバッグモードで実行した時、通過アクティビティの名前になる 3. どこのアクティビティで異常終了したかが分かる TIPS
さて、ロボットの処理
外国為替公示相場を使う(1) 対象とするExcelを開くため、 アクティビティパネルから「Excel」で検索し、「Excel アプリケーション スコープ」をドラッグ&ドロップする
外国為替公示相場を使う(2) 対象とするExcelを開く際のモードを指定する 可視 ▪ 存在しない場合ファイルを作成 □ 自動保存 □ 読み込み専用 ▪
外国為替公示相場を読む(1) 対象とするシートを読み込むため、 アクティビティパネル「セルを読み込み」を、 「Excel アプリケーション スコープ」の 中へドラッグ&ドロップする
外国為替公示相場を読む(2) 読み込む対象のシート、範囲指定する フィルターの使用 □ ヘッダーの追加 ▪ 表示形式を維持 □ シート名 "外国為替公示相場_7月3日"
範囲 "A1" データテーブル DataTable型変数 列A 列B 列C DA1 DB1 DC1 DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型)
変数を定義する 未定義状態 マウスの先端をテキストボックスへ Ctrl + k を押下すると、変数を設定する状態になる 変数を入力して、Enterで確定する 振返り
変数のスコープを確認 変数タブから定義した変数を確認する ⇒変数の型を確認する ⇒スコープを確認する スコープが被ると、警告マークがつく ⇒採用する項目を残し、片方はDeleteする 変数A 変数B 変数X 変数B
<スコープ … 変数の有効範囲> 変数X 変数C 変数Bは上位 の定義と被る 変数Xは同位の 定義と被らない 振返り
変数を参照する 未定義状態 マウスの先端をテキストボックスへ Ctrl + space を押下すると、使える変数一覧が表示される ※先頭文字を入れてからCtrl + spaceすると、先方一致した
変数一覧が表示される 変数を選択して、Enterで確定する 振返り
請求CSVファイルを読む(1) 対象とするCSVを開くため、 アクティビティパネルから「CSV」で検索し、「CSVを読み込み」をドラッグ&ドロップする。
請求CSVファイルを読む(2) エンコーディング "SJIS" ヘッダーの含む ▪ 区切り文字 "Comma" 引用符を無視 - ファイルのパス
"*.csv" データテーブル DataTable型変数 読み込むCSVファイルの条件を設定する
MEMORY 現在の状態 通貨 記号 TTS TTB MIDDLE 米ドル USD 108.5
106.5 107.5 英ポンド GBP 137.95 129.95 133.95 ユーロ EUR 122.29 119.29 120.79 カナダドル CAD 80.81 77.61 79.21 変数: DT(DataTable型) 品名 通貨コード 数量 単価 BEATLES - LET IT BE GBP 2 3.88 Huey Lewis and the News - Power of Love USD 5 1.75 Kraftwerk - The Robots EUR 4 2.34 BEATLES - HELP! EU8 7 2.55 変数: CDT(DataTable型)
MEMORY 現在の状態の説明&宣伝 通貨 記号 TTS TTB MIDDLE 米ドル USD 108.5
106.5 107.5 英ポンド GBP 137.95 129.95 133.95 ユーロ EUR 122.29 119.29 120.79 カナダドル CAD 80.81 77.61 79.21 変数: DT(DataTable型) 品名 通貨コード 数量 単価 BEATLES - LET IT BE GBP 2 3.88 Huey Lewis and the News - Power of Love USD 5 1.75 Kraftwerk - The Robots EUR 4 2.34 BEATLES - HELP! EU8 7 2.55 変数: CDT(DataTable型) • 各データは、パソコンのメモリの中 に、変数として格納されます。 • 今回扱うデータは、「DataTable型」 の変数として格納、参照します。 • 「DataTable型」の変数を扱うには、 【列名】が重要です。 列名 列名
CSV上の"通貨"と、 "通貨コード"とで突合する(1) MIDDLEの値を求めるため、 アクティビティパネルから「DataTable」で検索し、「データテーブルを結合」をドラッグ&ドロップする。
CSV上の"通貨"と、 "通貨コード"とで突合する(2) MIDDLEの値を求める条件設定のため、 「データテーブルを結合」アクティビティの【結合ウィザード】をクリックする。
MEMORY CSV上の"通貨"と、 "通貨コード"とで突合する(3) 通貨 記号 TTS TTB MIDDLE 米ドル USD
108.5 106.5 107.5 英ポンド GBP 137.95 129.95 133.95 ユーロ EUR 122.29 119.29 120.79 カナダドル CAD 80.81 77.61 79.21 変数: DT(DataTable型) 品名 通貨コード 数量 単価 BEATLES - LET IT BE GBP 2 3.88 Huey Lewis and the News - Power of Love USD 5 1.75 Kraftwerk - The Robots EUR 4 2.34 BEATLES - HELP! EU8 7 2.55 変数: CDT(DataTable型) • 【入力データテーブル1】の【列テーブル1】で指定した列名をキー1とする。 • 【入力データテーブル2】の【列テーブル2】で指定した列名をキー2とする。 • キー1とキー2が一致した時のデータを求めるため、結合型を" = "とする。 • 【入力データテーブル1】の全件を【出力データテーブル】に出力させるため、 結合型は"Left"を指定する。 • 結合した結果は、【出力データテーブル】に指定した変数に格納される
MEMORY CSV上の"通貨"と、 "通貨コード"とで突合する(4) 通貨 記号 TTS TTB MIDDLE 米ドル USD
108.5 106.5 107.5 英ポンド GBP 137.95 129.95 133.95 ユーロ EUR 122.29 119.29 120.79 カナダドル CAD 80.81 77.61 79.21 変数: DT(DataTable型) 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 BEATLES - HELP! EU8 7 2.55 変数: NDT(DataTable型) 品名 通貨コード 数量 単価 BEATLES - LET IT BE GBP 2 3.88 Huey Lewis and the News - Power of Love USD 5 1.75 Kraftwerk - The Robots EUR 4 2.34 BEATLES - HELP! EU8 7 2.55 変数: CDT(DataTable型)
"通貨"があったデータとなかったデータとを分ける(1) DataTableから必要な情報で抽出するため、 アクティビティパネルから「DataTable」で検索し、「データテーブルをフィルタリング」をドラッグ&ドロップする。
"通貨"があったデータとなかったデータとを分ける(2) DataTableから必要な情報で抽出するため、 「データテーブルをフィルタリング」アクティビティの【フィルターウィザード】をクリックする。
MEMORY 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE
BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 BEATLES - HELP! EU8 7 2.55 "通貨"があったデータとなかったデータとを分ける(3) • 【入力データテーブル】に対象とするデータテーブルを指定する • 【列】には、抽出キーとする列名を指定する。 ⇒存在しない列名の場合は、実行時にエラーとなる • 【行フィルターモード】は、•保持とする。 • 【操作】には抽出条件を指定する。 • 【出力データテーブル】で、Ctrl+kで定義した変数に抽出した結果が格納さ れる 変数: NDT(DataTable型)
MEMORY 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE
BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 BEATLES - HELP! EU8 7 2.55 "通貨"があったデータとなかったデータとを分ける(4) • 【入力データテーブル】に対象とするデータテーブルを指定する • 【列】には、抽出キーとする列名を指定する。 【行フィルターモード】は、•削除とする。 • 【操作】には抽出条件を指定する。 ⇒◦保持の時と同じ条件で、•削除をした方がミスを防げる • 【出力データテーブル】で、Ctrl+kで定義した変数に抽出した結果が格納さ れる 変数: NDT(DataTable型)
MEMORY "通貨"があったデータとなかったデータとを分ける(5) 変数: NGDT(DataTable型) 変数: OKDT(DataTable型) 品名 通貨コード 数量 単価
通貨 記号 TTS TTB MIDDLE BEATLES - HELP! EU8 7 2.55 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79
円換算した金額を求める(1) 計算した結果を格納するための列を設定するため、 アクティビティパネルから「データ列」で検索し、「データ列を追加」をドラッグ&ドロップする。
円換算した金額を求める(2) 「データ列を追加」のパラメタを設定する 【OKDT】に【Int32型】の列名【円換算】とする
円換算した金額を求める(3) 全行を対象に、計算した円換算を設定するため アクティビティパネルから「繰り返し」で検索し、「繰り返し (各行)」をドラッグ&ドロップする。
円換算した金額を求める(4) 「繰り返し (各行) 」のパラメタを設定する 全行処理対象とするデータテーブル【OKDT】を指定、現在のインデックスにも【ix】などを指定する
円換算した金額を求める(5) どういう事が起きているか? ix. ToString & “,”& Row.item(“通貨コード”).ToString & “,”& Row.item(“通貨").ToString
⓪ ① ② ⓪ ① ②
円換算した金額を求める(6) どういう事をすればいいか? ・各行の円換算値を設定 ・併せて円換算値の合計を計算 Row.Item("円換算") Int32.Parse(Row.Item("数量").ToString) * Double.Parse(Row.Item("単価").ToString) * Double.Parse(Row.Item("MIDDLE").ToString)
合計 合計 + Ctype(Row.Item("円換算").ToString, Int32) ← ←
円換算した金額を求める(7) MEMORY 品名 通貨コード 数量 単価 通貨 記号 TTS TTB
MIDDLE BEATLES - HELP! EU8 7 2.55 変数: NGDT(DataTable型) 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE 円換算 BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 1039 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 941 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 1131 変数: OKDT(DataTable型)
合計行を追加する(1) 合計した値をDataTableに追加するため、新しい行を定義する 新しい行に合計を設定するため、“円換算”列に合計を代入する
合計行を追加する(2) 新しい行をDataTableに設定するため アクティビティパネルから「データ行」で検索し、「データ行を追加」をドラッグ&ドロップする。
合計行を追加する(3) 「データ行を追加」のパラメタを設定する 追加する行に【DR】と、データテーブルに【OKDT】を指定する
合計行を追加する(4) MEMORY 品名 通貨コード 数量 単価 通貨 記号 TTS TTB
MIDDLE BEATLES - HELP! EU8 7 2.55 変数: NGDT(DataTable型) 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE 円換算 BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 1039 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 941 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 1131 3111 変数: OKDT(DataTable型)
請求xlsxファイルを指定(1) 保存対象とするExcelを開くため、 アクティビティパネルから「Excel」で検索し、「Excel アプリケーション スコープ」をドラッグ&ドロップする
請求xlsxファイルを指定(2) 対象とするExcelを開く際のモードを指定する 可視 ▪ 存在しない場合ファイルを作成 ▪ 自動保存 ▪ 読み込み専用 □
請求xlsxファイルに出力(1) 対象とするシートに書き込むため、 アクティビティパネル「セルに書き込み」を、 「Excel アプリケーション スコープ」の 中へドラッグ&ドロップする
請求xlsxファイルに出力(2) 書き込む対象のシート、範囲指定する ヘッダーの追加 ▪ シート名 "CSVファイル名_OK" 開始セル "A1" データテーブル DataTable型変数
列A 列B 列C DA1 DB1 DC1 DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型)
請求xlsxファイルに出力(3) 書き込む対象のシート、範囲指定する ヘッダーの追加 ▪ シート名 "CSVファイル名_NG" 開始セル "A1" データテーブル DataTable型変数
列A 列B 列C DA1 DB1 DC1 DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型)
ファイル出力結果 20200704請求書.xlsx CSVファイル名_NG CSVファイル名_OK
発展(やってみよう!) • 出力結果には、二つのDataTableの列が全て存在している • 後続のロボットには不要である列かもしれない。 ↑そもそもは、設計段階で決めておくべきもの。 CSVファイル名_OK
方法(案) 1. 不要な列を「データ列の削除」で消していく ⇒ただ列を消すだけなので簡単だが、 列レイアウトの変更はできない 2. 必要な列が定義されているDataTableに「データテーブルを マージ」していく ⇒列レイアウト変更可能だが、 列を新たに定義する手間が必要がある。
3. 入力データテーブルを読んだ後に、「データ列の追加」をし、 そのレイアウト情報を保存しておき、 「データテーブルをマー ジ」する際に利用する などなど
不要な列を「データ列の削除」で消していく 対象とするDataTableを、 物理的にコピーする 物理的にコピーした DataTableから"通貨"列 を削除する
不要な列を「データ列の削除」で消していく(結果) 20200704請求書.xlsx CSVファイル名_OK_DEL方法
列が定義されているDataTableに 「データテーブルをマージ」していく DataTable型を初期化する DateTable型に、 TypeArgumentと列名を 指定する DataTableとDataTableをマージする ソースを、保存先にマージする。その際 列名がない時は”Ignore”する
列が定義されているDataTableに 「データテーブルをマージ」していく(結果) 20200704請求書.xlsx CSVファイル名_OK_DEF方法 CSVファイル名_OK_DEL方法
5. 変数ってなんだ? 2020年4月現在
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械。 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所はカラッポ
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械。 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に100円 100円をいれてみる ⇒ 100円では足りないので商品が出てこない
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械。 でも、売価以上のお金をいれないと、商品が出てこない 150 100円をいれてみる ⇒ 100円では足りないので商品が出てこない もう100円をいれてみる ⇒ 200円になって足りたので商品が出てくる!
お金を溜める所に200円
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械。 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 • 100円+100円=200円と言う事が、自動 販売機には分かる! •
200円から150円の商品を買って、お 釣りが50円と言うのも分かる! 100円をいれてみる ⇒ 100円では足りないので商品が出てこない もう100円をいれてみる ⇒ 200円になって足りたので商品が出てくる!
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械。 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 • 100円+100円=200円と言う事が、自動 販売機には分かる! •
200円から150円の商品を買って、お 釣りが50円と言うのも分かる! 情報をためておく場所、名前を変数 100円をいれてみる ⇒ 100円では足りないので商品が出てこない もう100円をいれてみる ⇒ 200円になって足りたので商品が出てくる!
2020年4月現在 6. DataTable型って!
DataTable型って 引用元:https://qiita.com/tizonaColada_99/items/9212d35722af3bd5bc9f DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。
DataTable型って DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。 引用元:私が考えた(^^♪ DataTableとは、EXCELのシートのようにセルの縦横集合体として格納されているデータの事です。 行位置×列位置を指定する事で、セルを特定し、EXCELシートのようにデータを格納しています。
DataTable型って DataTable型には、列情報(ヘッダー情報)として、DataColumn型が一つ存在する 列情報には、列定義が1以上存在する 列情報には、ほかに重複しない列名が必要である 列情報には、どんなデータを格納するかの列形式が存在する
DataTable型って DataTable型には、行情報(データ情報)として、DataRow型が0以上存在する 行情報には、列毎の列形式に沿ったデータが格納される …
DataTable型から、一つのデータを参照するには… DataTable型のデータを参照/設定は、 ① データテーブルの ② (ある)行の ③ (ある)列 の順である。 ②
③ 例:B4セル相当位置 DataTable.Rows(3).Item(1) ←※2 ↑※1 Or ↓※1 DataTable.Rows(3).Item("Column1") ※1 行の先頭は0から始まる ※2 最左端列は0から始まる …
DataTable型をExcelシートに書き出すには… • 対象とするブックは、「Excelアプリケーションスコープ」で指定する • Excelアプリケーションスコープの中に「範囲に書き込み」アクテイビティをドラッグ&ドロップし、 • 展開先の「シート名」、「開始セル」を指定し、 • 展開元の「DataTable変数」を指定する。 •
その際、「ヘッダーの追加」をTrueとすると、DataTableの列名を展開する。
ExcelシートをDataTable型にするには… • 対象とするブックは、「Excelアプリケーションスコープ」で指定する • Excelアプリケーションスコープの中に「範囲を読み込み」アクテイビティをドラッグ&ドロップし、 • 展開元の「シート名」、「範囲(★)」を指定し、 • 展開先の「DataTable変数」を指定する。 •
その際、「ヘッダーの追加」をTrueとすると、 範囲の1行目を列名とする
DataTable型…どんな事ができる? 標準的なアクティビティ EXCELの行(1,2…)方向に追加、 削除するアクティビティ EXCELの列(A,B…)方向に追加、 削除するアクティビティ DataTableへの処理系★と DataTableの中身の処理系☆ ☆ ☆
☆ ★ ☆ ★ ★ ★ ☆
DataTable型…他にどんなことが出来る? ⇒ .Net Freamworkの機能を使用する! DataTable型の容れ物を複数のキーで並び替える .NETのDataView型の容れ物にあるSORT機能を利用する 列の数を知りたい!/行の数を知りたい! データテーブル.Columns.Count /データテーブル.Rows.Countで取得可能 あるテーブルの、構造だけを複製したい!(データは不要)
データテーブル.Cloneで、別のDataTableへ構造のみを代入する! あるテーブルの、構造もデータも複製したい! データテーブル.Copyで、別のDataTableへデータ丸ごと代入する!
DataTable型…他にどんなことが出来る? ⇒ .Net Freamworkの機能を使用する! あるテーブルの、列の詳細情報を知りたい ご相談ください 特定列において重複している行を削除する ご相談ください 行と列を入れ替えたい ご相談ください
DataTable型…他にどんなことが出来る? ⇒ .Net Freamworkの機能を使用する! 特定列において重複している行を削除する ご相談ください 行と列を入れ替えたい ご相談ください https://connect.uipath.com/ja/marketplace/components/nozrpcr0qkoyvzs8qus4lp あるテーブルの、列の詳細情報を知りたい
ご相談ください
よくある勘違い 列A 列B 列C 行A1 行B1 行C1 行A2 行B2 行C2
行A3 行B3 行C3 行A4 行B4 行C4 行A5 行B5 行C5 範囲を読み込み 列A 列B 列C 行A1 行B1 行C1 行A2 行D2 行C2 行A3 行B3 行C3 行A4 行B4 行C4 行A5 行B5 行C5 代入 この時点で、処理を終了させ、Excelに値が反映されていないって思ってしまう
よくある勘違い 列A 列B 列C 行A1 行B1 行C1 行A2 行B2 行C2
行A3 行B3 行C3 行A4 行B4 行C4 行A5 行B5 行C5 範囲を読み込み 列A 列B 列C 行A1 行B1 行C1 行A2 行D2 行C2 行A3 行B3 行C3 行A4 行B4 行C4 行A5 行B5 行C5 代入 「範囲を読み込み」と同じ左上セルを指定して、 「範囲に書き込み」アクティビティで書き戻す! 範囲に書き込み
7. 振り返り 2020年4月現在
3. 振り返り-1 • Uipath Studio Community Editionには、安定版とプレビュー版 がある(切り替え可能) • 通常Studioと、StudioXがある(切り替え後、再起動)
• アクティビティ名は覚えず、検索する! ⇒日本語、英語でもOK! ⇒⇒多用するアクティビティは、 お気に入りに登録!
3. 振り返り-2 • 変数は、Ctrl+kで定義できる。 但し、型と、スコープ(変数の 有効範囲)は確認する事! • 変数は、Ctrl+Spaceで参照で きる。 •
設定はアクティビティ本体だ けでなく、パラメタパネルでも 設定できる(パラメタパネルで なければ設定できないものも ある!) 。
3. 振り返り-3 • どんなロボットにするかブレないように、入力と出力を書いた 設計書を書いておこう • どんなアクティビティを使うかをちょっと決めよう! ⇒「範囲を読み込み」 Or 「セルを読み込み」
• それには、「どんなアクティビティがあるか」知っておこう! • それには、「UiPath アカデミー」を受講しよう! https://academy.uipath.com/
ここまででございます。 これで簡単なロボットは組み立てられます!! ➢ 自信を持って! ➢ 解らなくなったら、 UiPath Forumへ! https://forum.uipath.com/c/japan/forum/37