MENU

for Ideal Design

RPA

【WinActor】テーブルスクレイピングで勤怠データを一括出力

RPA WinActor 業務改善 生産性向上 ビジネスデザイン データでビジネスをもっと面白く エンジニア

前回記事より実際にWebから色んなデータ取得方法レシピをご紹介している企画
今回は第2弾、「テーブルスクレイピング」ノードをご紹介します。
これはWinActor Ver.7以上のバージョンで使用することが出来ます。

さて、今回の題材はクラウド型の勤怠管理システム「Touch On Time」。
実際のお取引企業様でもよく要望がある自動化業務の1つです。
3か月分のデイリー勤怠データを
CSV出力し、目的となる勤怠打刻漏れをチェックする業務をできるシナリオレシピとなっております。

 ■過去記事:
WinActorライブラリ「表の値取得(IE)」ノード

🌟スペック環境:Windows10、WinActor ver.710

WinActor同梱ライブラリ「テーブルスクレイピング(Chrome)」ノードでできること

Chrome使用して、クラウドシステム(勤怠管理実績)を複数ページにわたって取得してみましょう!こんな感じ👇のcsvデータを取得することができます。
勤怠管理クラウドシステムを導入していらっしゃる企業様もだいぶ増えてきました。それを活用して、打刻漏れなど定期的にチェックしご本人様へ注意喚起していきましょう!

「テーブルスクレイピング(Chrome)」ノードでできること

※上記図は勤怠管理システムの「Touch On Time」からテーブルスクレイピングで取得しました

🌟シナリオ完成図🌟

・ログイン(Chrome)
・テーブルスクレイピング
・csvを開く(作成しなくても良し)

シナリオ完成図

まずは、YouTube動画で作成方法を見てください!

「テーブルスクレイピング」ノード、優秀ですよね。
うまくハマると作業がかなり早いです!

※Chromeの自動記録方法の詳細は過去記事をご覧ください!

◆実際に作ってみましょう!シナリオ作成レシピ

~ログイン~

上記動画の通り、自動記録(レコーディング)で作成はじめて見てください。
ここはアプリケーションに合わせて作成してくださいね。
復習となりますが、Chromeは「ブラウザ起動」や「Chrome起動」で起動下さい。
 (コマンド実行などでChrome起動すると、「テーブルスクレイピング」ノードは使えませんのでご注意ください)
※自動記録したら以下の様なプロパティとなります

Chromeをブラウザ起動します
正式名称:Chrome起動
ブラウザ名:値⇒browser_chrome
ブラウザ種類:chrome

Chromeをブラウザ起動

所定のURLへジャンプします
正式名称:Chromeページ表示
ブラウザ名:値⇒browser_chrome
URL:値⇒https://touchontime.com/admin

所定のURLへジャンプ

”ID”を入力
正式名称:文字列設定(Chrome)
ブラウザ名:値⇒browser_chrome
Xpath:値⇒//*[@id=”login_id”] 設定する値:値⇒ログインIDを入力します

”ID”を入力

”PW”を入力
正式名称:文字列設定(Chrome)
ブラウザ名:値⇒browser_chrome
Xpath:値⇒//*[@id=”login_Password”] 設定する値:値⇒ログインパスワードを入力します

”PW”を入力

❺”ログイン”クリック
正式名称:クリック(Chrome)
ブラウザ名:値⇒browser_chrome
Xpath:値⇒//*[@id=”login_button”]

”ログイン”クリック


~テーブルスクレイピング~

テーブル情報を取得します
正式名称:テーブルスクレイピング
ブラウザ名:値⇒browser_chrome
スクレイピング対象のXpath:値⇒/html/body/div/div[2]/div/div[5]/div[1]/table ★補足があります
ページ遷移要素のXpath:値⇒//*[@id=”button_before_month”] 回数:値⇒3 ※取得したいページ数を指定
待機時間(秒)(任意):値⇒空白
間隔(秒)(任意):値⇒1
※サイトに負荷がかからない様に秒数をもたせて間隔をあけます
タイトル行:第1行
開始行:第2行
終了行:最終行
開始列:第1列
終了列:最終列
ファイル名:Test.csv(変数)
終了状態を格納する変数:結果(変数)
実行回数を格納する変数:実行回数(変数)
最後のURLを格納する変数:URL

テーブルスクレイピング

★補足:スクレイピング対象のXpathの取得方法
①Chromeブラウザで「F12」キー押下しデベロッパーツールを開く
➁”Select an Element~”アイコンをクリックするか、Ctrl+Shift+Cを起動。

テーブルスクレイピング対象のXpathの取得方法

⑥最後に、「…」から右クリックし、”Copy Xpath”を選択します(クリップボードに値が入ります)

<注意事項>
※”スクレイピング対象のXpath”は、HTML構文上、tableuloldldivタグ要素のみ有効です
※”ページ遷移要素のXpath”は、aタグ要素のみ有効です
※”回数”は、0 を指定した場合は、ページ遷移要素のクリックによるページ遷移しません
※”タイトル行”はHTML構文上、tableタグ要素の時にタイトルとして指定行を取得
※”開始行”はHTML構文上、tableタグ要素の時に動作します
※”終了行”はHTML構文上、tableタグ要素の時に動作します
※”開始列”はHTML構文上、tableタグ要素の時に動作します
※”終了列”はHTML構文上、tableタグ要素の時に動作します
※”終了状態を格納する変数”の現在値の評価は以下で確認ください
・0:正常
・-1:ページ遷移要素が見つからない
・-2:スクレイピングに失敗した
・-3:ページ遷移に失敗した(タイムアウト)
・-4:CSV ファイルのオープンや書き込みに失敗した
※また、終了状態が -2、-3、及び、-4 の場合には、アクション例外が発生します。

結果確認(ファイルと関連づいているアプリ起動)

書き出したデータファイルを開きます
正式名称:ファイルと関連づいているアプリ起動
パス:Test.csv(変数)
※この⑦は作成しなくても問題ありません。動画に沿ってご説明してます
(データ確認する為に開いています)

書き出したデータファイルを開く

~プラスワン+:エラーを担当者別にファイリングします~

目的の打刻漏れのチェックする自動化シナリオ作成はこの後、Excel上で打刻漏れなどエラーチェックする工程を作っていただく形になると思います。
今回の「Touch On Time」システムでは日付部分に”エラー”と出てきますのでこれをトリガーとします。
エラーがある場合はerror(担当者名)として指定格納先へ保存していきます。
これで、チェック業務担当者様はファイル名をみて、ご本人様へ通知を出すだけといった流れになるのではないかと存じます。

※Excelオートフィルタでエラーがあるか抽出する
・エラーがある⇒ご本人へ通知
・エラー無し⇒終了
※エラーがあった場合はファイル名に担当者名を追記してerror.xlsxを作成します

🌟シナリオ完成図🌟
(上のテーブルスクレイピングシナリオの続きです!)

シナリオ完成図

🌟変数は以下の通り準備します🌟

変数一覧

◆シナリオ作成レシピ プラスワン+、も作ってみましょう!

❽「担当者名」をWebから取得
正式名称:値の取得
ブラウザ名:値⇒browser_chrome
XPath:値⇒/html/body/div/form/div/div/div/div[1]/div[1]/p/span[3] 値を格納する変数:担当者(変数)

「担当者名」をWebから取得

必要な「担当者名」だけにする
正式名称:文字列の切り出し(途中文字)
切り出し元文字列:担当者(変数)
切り出し開始位置:値⇒14
切り出し文字数:値⇒5
切り出し文字:担当者(変数)

必要な「担当者名」だけにする

※これは、
「 Z12345 和久須 玲」担当者コード+氏名を⇒「和久須 玲」
へ文字列変更するためのステップです!
なので、それぞれの状況によって変更下さい。
※文字先頭を0~カウントして14文字目から5文字取得し、担当者(変数)へ取得する(文頭から数えて12じゃないの?と思われるかもしれませんが、実際の環境では改行や空白も含んでいた為、結果14となりました)

※「  」とはHTML構文上、半角スペースを埋め込む際に用いられるコードです

エラーExcelに担当者名を付ける
正式名称:文字列置換
変換文字列:error.xlsx(変数)
置換前:値⇒★
置換後:担当者(変数)

エラーExcelに担当者名を付ける

エラーを抽出する
正式名称:Excel操作(フィルタ条件設定)
ファイル名:Test.csv(変数)
シート名:値⇒
セル位置:値⇒A1
列番号:値⇒2
絞り込みキー:値⇒*エラー

エラーを抽出

エラーがあるか確認
正式名称:エミュレーション
ウィンドウ識別名:test.csv
操作:”↓”キーを1回押下する操作を登録
ーーーーーーーーー
待機[300]ミリ秒
キーボード[Down]をDown
キーボード[Down]をUp
待機[300]ミリ秒
ーーーーーーーーー
※タイトル行の1つ下にアクティブセルを移動する

エラーがあるか確認

⓭エラーレコードが存在するか確認
正式名称:Excel操作(アクティブセルから指定位置の値取得)
シート名:値⇒
x:値⇒0
y:値⇒0
格納先変数:結果(変数)

エラーレコードが存在するか確認

※⓬⓭2つで1つの操作です
※⓭で、フィルタ抽出した場合は非表示行があるため、(y:値⇒-1)で値取得はNGです

⓮分岐
正式名称:分岐グループ
条件式設定:結果(変数) が”等しくない” 空白
・エラーがある→Trueへ
・エラー無し→Falseへ(その後の処理なし)

分岐概要

分岐詳細

⓯Error.xlsxを新規作成
正式名称:Excel操作(新規作成)
ファイル名:error.xlsx(変数)
シート名:シート名(変数)

Error.xlsxを新規作成

⓰A1を選択(コピー&ペーストの為)
正式名称:Excel操作(範囲選択)
ファイル名:Test.csv(変数)
シート名:値⇒
開始セル:値⇒A1
終了セル:値⇒A1

A1を選択(コピー&ペーストの為)

【補足として】
この工程の役割は、ショートカットキー「Ctrl+Home」を「エミュレーション」ノードにご登録いただく形でも同じです。
「カーソル移動」ノードも有効ですが、対象ファイルが元々どのように保存されているか?確認が必要です。

⓱有効範囲を選択して、Ctrl+C(コピー&ペーストの為)
正式名称:エミュレーション
ウィンドウ識別名:test.csv
操作:ショートカットキーを2つ登録
・Ctrl+Shift+↓+→ で範囲選択
ーーーーーーーーー
待機[300]ミリ秒
キーボード[Ctrl]をDown
キーボード[Shift]をDown
キーボード[Down]をDown
キーボード[Down]をUp
キーボード[Right]をDown
キーボード[Right]をUp
キーボード[Shift]をUp
キーボード[Ctrl]をUp
待機[300]ミリ秒
ーーーーーーーーー
・Ctrl+C でコピー
ーーーーーーーーー
キーボード[Ctrl]をDown
キーボード[C]をDown
キーボード[C]をUp
キーボード[Ctrl]をUp
待機[300]ミリ秒
ーーーーーーーーー
※エラー内容をコピーする工程です有効範囲を選択して、Ctrl+C(コピー&ペーストの為)

【補足として】
この工程の役割はオートフィルタ抽出されたものだけをコピペする事なので、範囲選択する方法で別のノードを組み合わせて頂いても問題ありません。

⓲値のみペースト(コピー&ペーストの最後の工程)
正式名称:Excel操作(値のみペースト)
ファイル名:error.xlsx(変数)
シート名:値⇒
セル:値⇒A1

値のみペースト(コピー&ペーストの最後の工程)

⓳ファイル保存
正式名称:Excel操作(上書き保存)
ファイル名:error.xlsx(変数)
保存後に閉じる:閉じる
実行結果:結果(変数)

ファイル保存

⓴保存せずに閉じる
正式名称:Excel操作(保存なしで閉じる)
ファイル名:Test.csv(変数)
実行結果:結果(変数)

保存せずに閉じる

これでフィニッシュ!!お疲れ様でした!

🌟Webスクレイピング、クローリングするシナリオ作成時の注意点をふまえておきましょう!

■著作権と利用規約
Webページ上の情報の著作権や利用規約を確認下さい。Webページ上の情報を抜き出して再利用することを利用規約で禁じているサイトもあります。

■Webサイトへの負荷
プログラムの作り方によっては、同時に複数のURLに接続してデータを取得したり、短時間で連続してURLからデータを取得するなど、Webサイトに負荷をかけない様にする必要があります。
最低1秒以上は間隔をあけてWebサイトへアクセスするなど対応が必要です。

最後までお読みいただき、ありがとうございました。
皆様も是非、一度チャレンジしてみて下さいね!