今回はECサイトで競合製品の価格を毎日巡回し、日次や週次で報告するためのデータを生成する「Power Automate Desktop」(PAD)のフロー作成に取りかかる。 事前準備として、Microsoftの公式サイトからPADのクライアントをインストールし、使用するウェブブラウザーの拡張機能を導入しなければならない。 ここではスクレイピング(情報抽出)先としてAmazon.co.jpを使用しているが、同サイトはロボットなどによるデータ収集・抽出ツールの使用は許可していない。あくまでも一例であることを了承してほしい。 1.リストを作成 2.Google Chromeを起動 3.ECサイトから特定商品の価格を抽出 4.不要な文字列を削除 5.改行コードを削除 6.価格を文字列から数値に変換 7.実行日時を取得 8.実行日時と加工した価格をリストに格納 9~11.保存するCSVファイルを作成 12.CSVファイルにデータを保存 13.Google Chromeを終了 以上がフローの概要だ。 ステップ4~6はAmazon.co.jpで取得できるのが「¥ 1,000」という文字列であり、先頭の「¥ 」や改行が不要であるため必要な処理である。また、ステップ9~11はPADにファイルを生成する機能がないため、初回実行時にファイルが存在しない場合は「copy nul foo.csv」を実行してファイルを新規作成する処理を加えた。 それではポイントとなる機能を個別に紹介しよう。一般的なプログラミングと同じく、PADも事前準備が必要だ。
(理由は後述するが)最初に「新しいリストの作成」でリストテーブルを作成する。また、今回はウェブブラウザーとして「Google Chrome」を使用しているが、PADは「Microsoft Edge」や「Mozilla Firefox」もサポートしているので、お使いの環境に応じて選択してほしい。 ステップ3の「Webページからデータを抽出する」を挿入し、ウェブブラウザーインスタンスとして「%Browser%」を定義した後、「抽出プレビュー」で対象となるECサイトの価格情報を選択する。 前述の通り、Amazon.co.jpで取得できる価格は「¥ 1,000」となってしまう。CSVとして扱うのであれば、カンマは邪魔な存在だ。まずはステップ5の「テキストのトリミング」で「文字の位置」を「1」と指定して先頭から「¥ 」までを削除。次に「テキストのトリミング」で改行コードを削除する。そして、文字列を数値に変換している。 ここにステップ7で取得したフロー実行時の日時をステップ8で価格とともにリストに格納。後はステップ12でCSVに追記保存している。今回のフローをコードとして記述した。コピー&ペーストして、ご自分の環境で試してほしい。 /* Variables.CreateNewList List=> List WebAutomation.LaunchChrome Url: $'''https://ift.tt/3mAscej' WindowState: WebAutomation.BrowserWindowState.Normal ClearCache: False ClearCookies: False BrowserInstance=> Browser WebAutomation.DataExtraction.ExtractSingleValue BrowserInstance: Browser ExtractionParameters: {['html > body > div:eq(1) > div:eq(2) > div:eq(6) > div:eq(3) > div:eq(3) > div:eq(8) > div:eq(0) > div > table > tbody > tr:eq(0) > td:eq(1) > span:eq(0)', 'Own Text', ''] } ExtractedData=> DataFromWebPage Text.GetSubtextFrom Text: DataFromWebPage CharacterPosition: 1 Subtext=> Subtext Text.Trim Text: Subtext TrimOption: Text.TrimOption.Both TrimmedText=> TrimmedText Text.ToNumber Text: Subtext Number=> TextAsNumber DateTime.Current DateTimeFormat: DateTime.DateTimeFormat.DateAndTime Offset: $'''Asia/Tokyo''' CurrentDateTime=> CurrentDateTime Variables.AddItemToList Item: $'''%CurrentDateTime%,%TextAsNumber%''' List: List NewList=> List IF (File.DoesNotExist File: $'''F:\\OneDrive - Cactus\\ZDNet\\foo.csv''') THEN System.RunDOSCommand DOSCommandOrApplication: $'''copy nul foo.csv''' WorkingDirectory: $'''F:\\OneDrive - Cactus\\ZDNet''' StandardOutput=> CommandOutput StandardError=> CommandErrorOutput ExitCode=> CommandExitCode END File.WriteCSV VariableToWrite: List CSVFile: $'''F:\\OneDrive - Cactus\\ZDNet\\foo.csv''' CsvFileEncoding: File.CSVEncoding.UTF8 IncludeColumnNames: False IfFileExists: File.IfFileExists.Append ColumnsSeparator: File.CSVColumnsSeparator.Tab WebAutomation.CloseWebBrowser BrowserInstance: Browser */ ただし、PADは定期的な自動実行機能を備えていないため、業務時間内に手動でフローを実行しなければならない。 だが、手動でECサイトから競合製品の価格を毎日巡回する手間を踏まえると、わずかな業務時間短縮となるだろう。PADは“かゆいところに手が届く”とまで機能(アクション)が用意されているとは言いがたい。PerlやPythonを使ってきた方にはストレスを覚える場面も多いだろう。 それでも、Windowsの操作は自動化できる利点は大きい。公式ドキュメントにご自身の業務を簡略化できるか思案していただきたい。
「Power Automate Desktop」で競合製品の価格調査を自動化する(ZDNet Japan) - Yahoo!ニュース - Yahoo!ニュース
Read More
No comments:
Post a Comment