Power AutomateでWindows Kindleスクショ自動化してみた

eyecatch Windows自動スクショ
SBMJOB

WindowsPCでKindleアプリの自動スクショは色々方法がありますが、今回はMicrosoftのPower Automate Desktop 略してPADを使って自動化して見ましょう。PDF化すればAndroidタブレットで手書きで勉強できますしもちろんiPadで手書き書込みも可能ですね。

目次

スポンサーリンク

動画

まずはどんなふうにWindowsのKindleアプリを自動でスクリーンショットを取得しているのか動画で見ていただければと思います。

フロー

00:00〜00:45 スクリーンショット自動化デモ
00:45〜03:32 サンプルコードを使ってフローを完成させる手順
03:32〜04:38 テスト
04:38〜06:20 XnConvertでトリミング手順
06:20〜終わり PDF化

手順概要

上記の動画を見ていただけるとわかるとはおもいますが、手間がかかるのはスクリーンショット部分なのでそちらの手間をフローで解消する様にしております。PDF化までを自動化はしていないのでご注意ください。

Power Automate Desktop のインストール

Microsoftから無料でダウンロード・使用できます

まず前提としてWindows10以降のOSが必要になります。

またPower Automate DesktopはRPAツールと呼ばるものですが、Microsoftから無料提供され無料で使うことができます。厳密にいうと有料版もあるのですがビジネス利用での場合の利便性が向上しているものなのでできることは大きく変わりません。

ダウンロード Windows10

こちらのページの下の方にWindows10のダウンロードページがありますのでそちらからダウンロードしてインストールしてください。Microsoft Accountが必要になりますがWindows10をお使いの場合はほとんどの方が取得済みだと思います。まだの方はアカウントの作成も済ませてからダウンロードしてみましょう。

Windows11

Windows11は標準インストール済み

Windows 11は「Power Automate Desktop」を標準搭載 ~インストール不要でRPAを始められます。

自動スクリーンショットフロー実装手順

STEP
Power Automate Desktopを起動し新規フローを作成する
STEP
新規フローに次のコードを貼り付ける

下のコードがフローのコードになります。
Power Automate Desktopで新規フローを作成して以下のコードを貼り付けてください。
貼り付ける場所はメインタブの下にイラストが書いてあるのでその辺りをクリックしてペーストすればOKです。

# Kindleアプリが起動されているかの簡易チェック
UIAutomation.FocusWindow.Focus Window: appmask['Window \'Kindle\'']
ON ERROR
    SET appStatsError TO $'''notRunStat'''
END
IF appStatsError = $'''notRunStat''' THEN
    Display.ShowMessageDialog.ShowMessage Title: $'''Kindleアプリが起動確認''' Message: $'''Kindleアプリが起動していません。起動後再度処理してください。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed
    EXIT Code: 0
END
# DesktopにscreenshotFolderが存在しているかのチェックと作成指示
Folder.GetSpecialFolder SpecialFolder: Folder.SpecialFolder.DesktopDirectory SpecialFolderPath=> SpecialDesktopPath
IF (Folder.IfFolderExists.DoesNotExist Path: $'''%SpecialDesktopPath%\\screenshotFolder''') THEN
    Display.ShowMessageDialog.ShowMessage Title: $'''デスクトップにscreenshotFolderが存在しません。''' Message: $'''デスクトップにscreenshotFolderが存在しません。    「はい」作成 「いいえ」終了''' Icon: Display.Icon.Question Buttons: Display.Buttons.YesNo DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> folderCreateFlag
    IF folderCreateFlag = $'''Yes''' THEN
        Folder.Create FolderPath: SpecialDesktopPath FolderName: $'''screenshotFolder''' Folder=> NewFolder
    ELSE
        EXIT Code: 0
    END
END
# スクリーンショット回数の指定、電子書籍のページ数を入力してもらう。
Display.InputDialog Title: $'''スクショ回数を指定''' Message: $'''スクショ回数''' DefaultValue: 5 InputType: Display.InputType.SingleLine IsTopMost: True UserInput=> screenshotNumber ButtonPressed=> scCountButton
IF scCountButton = $'''Cancel''' THEN
    EXIT Code: 0
END
# 電子書籍が左開きか右開きかの選択
Display.SelectFromListDialog.SelectFromList Title: $'''ページ開き方向指定''' Message: $'''「左開き」か「右開き」を指定してください。''' List: $'''左開き
右開き''' IsTopMost: False AllowEmpty: False SelectedItem=> SelectedPageDirection SelectedIndex=> SelectedIndex ButtonPressed=> LRButtonFlag
IF LRButtonFlag = $'''Cancel''' THEN
    EXIT Code: 0
END
# スクリーンショット処理主要部
UIAutomation.FocusWindow.Focus Window: appmask['Window \'Kindle\'']
ON ERROR
    SET appStatsError TO $'''notRunStat'''
END
WAIT 3
Text.ToNumber Text: screenshotNumber Number=> TextAsNumber
SET loopCounter TO 1
SET createedFileNamer TO $'''sampleFileName_'''
LOOP WHILE (loopCounter) <= (TextAsNumber)
    SET pngFileNameBase TO $'''%createedFileNamer + loopCounter%.png'''
    Workstation.TakeScreenshot.TakeScreenshotOfForegroundWindowAndSaveToFile File: $'''%SpecialDesktopPath%\\screenshotFolder\\%pngFileNameBase%''' ImageFormat: System.ImageFormat.Png
    Workstation.PlaySound.PlaySystemSound SystemSound: System.SystemSound.Hand
    WAIT 1
    IF SelectedPageDirection = $'''右開き''' THEN
        MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Right}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
    ELSE
        MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Left}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
    END
    WAIT 1
    SET loopCounter TO loopCounter + 1
END
Display.ShowMessageDialog.ShowMessage Title: $'''処理終了''' Message: $'''処理が終了しました。保存されたファイルをご確認ください。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed2

下のMainタブのしたを一度クリックしてから貼り付けてください。しばらくたつとアクション項目が表紙されます。

アクション項目が表示されるとエラーが二つ表示されますがこれはOKです。

STEP
UI要素を追加する

追加するUI要素はKindleのWindow要素となります。

まずはKindleアプリを起動してスクリーンショットを撮りたい電子書籍を表示させておきます。デスクトップ左側に配置しておくと作業がしやすいです。

下の画像の赤で囲った部分のボタンをおします。

UI要素の追加ボタンをクリックします

マウスをKindleアプリの上に移動させて、下の画像の様にWindowと赤で表示され大きく囲まれる状態に上手く位置どりしてコントロールキーを押してUI要素を取得します。動画でも苦労していますが少し操作が難しいです。

STEP
UI要素をセレクタービルダーで条件変更

画面右のUI要素ボタンをクリックし、①要素をダブルクリックします、その後表示されたセレクターの②文字部分をダブルクリックします。

セレクタービルダーが表示されるので、赤で囲ったName属性の演算子を「含む」に変更し値を「Kindle」にします。

最後に三点ボタンで名前の変更を選択してWindow名を’Kindle’にします。するとフローのエラーが二つとも消えて作業完了です。エラーが消えなかったら手順を見直してください。

自動スクリーンショット取得手順

STEP
KindleアプリとPower Automate Desktopを配置する

Kindleアプリを画面左に配置しスクリーンショットを取得する大きさに調整します。

Power Automate Desktopを画面右に配置します。

STEP
Power Automate Desktopのフロー再生ボタンを押す

再生ボタンを押すと、何回スクリーンショットを取得するのか?デスクトップににスクショファイルを保管するフォルダがなければ作成の指示、ページの右開きか左開きかの確認が表示されます。

必要項目の確認が終わったらスクリーンショットが始まります。

スクリーンショット中はマウス操作は行わないでください。

STEP
処理終了後にデスクトップのscreenshotFolerを確認

スクリーンショットの自動取得処理が完了すると、終了の旨メッセージが表示されますので、デスクトップにある「screenshotFolder」を開いて中の画像を確認しましょう。

トリミング処理

XnConvertを使ってトリミング処理しています。

インストールされていなければ、以下のページよりダウンロードしてインストールしてください。

一括処理で画像のトリミングやいろいろな変更を行ってくれるアプリとなっています。

この記事では一括トリミング用に使っていますが本記事の動画を参考にしていただければと思います。

上下左右からトリミング領域を指定して一気にトリミングさせます。

PDF化処理

Windows10 標準の「Microsoft Printer to PDF」を使って印刷処理して一気にPDF化します。

まとめ

無料で使えるRPAアプリとしてMicrosoft がWindows10以降のOSでPower Automate Desktopを無料で使える様にアナウンスしてから1年くらいがたちました。この記事ではこれを利用して電子書籍アプリのスクリーンショット取得自動化を行いました。コーディングなしでこの機能を実装できるのであればRPAいいな!っておもいます。

関連記事

広告

udemy私も使っています。おすすめは安い時期に興味がある講座をいくつか購入しておいて時間がある時に見る!流し見でもいいと思います。

スポンサーリンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

システム開発SE・アプリ開発・デバッガー等々なんでもやる猫の下僕です。現在は凶暴猫にカタカタ動く手を狙われながらキーボードを打っています。かなりゆるい性格なのでコメントやメッセージお気軽に〜お仕事のご依頼もお気軽にぃ〜

スポンサーリンク

コメント

コメント一覧 (7件)

  • こんにちは。
    大変貴重な情報をご提供いただきありがとうございます。
    本日情報Windows11で試してみましたが、どうしても二つのエラー表示が
    消えません。Power Automateのバージョンは2.27.00186.22340です。
    このバージョンでも上記手順に従って操作すれば問題なくエラー表示が消えるのでしょうか?
    お手数ですがご指導いただければ幸甚に存じます。
    宜しくお願い申し上げます。

  • 申し訳ございません。
    先ほど再度トライしたところ正常に作動しました。
    御騒がせして申し訳ございませんでした。

  • ごめんなさい。私もエラー2つが消えないです。「UI要素」は「Kindle」に変更したのですが。

    場所 サブフロー: Main、アクション: 2、アクション名: ウィンドウにフォーカスする
    パラメーター ‘ウィンドウ’: UI 要素 ‘appmask > Window ‘Kindle” が見つかりません。
    場所 サブフロー: Main、アクション: 28、アクション名: ウィンドウにフォーカスする
    パラメーター ‘ウィンドウ’: UI 要素 ‘appmask > Window ‘Kindle” が見つかりません。

    お気づきの点等ございましたらご教示頂ければありがたいです。どうぞ宜しくお願いします。

    • かっちゃんさん コメントありがとうございます
      Kindleという名前で始まるWindowが見つからないようなので
      Step3とStep4をもう一度見直すと解決するかと思います。
      もしくはもう一度動画を見ながら作り直すのをお勧めします。

      的確なアドバイスには程遠いとは思いますが
      よろしくお願いします。

  • こんにちは。
    このサイトで紹介されているとおりにスクショを自動化し、成功しました。
    ですが、使用中に若干気になることがあったので、コメントさせていただきます。
    36列目にサウンドの再生とあるのですが、このアクションを無効化しても良いでしょうか。スクショ作業中に音がなってほしくないので。。

    • サワケンさん コメントありがとうございます
      サウンドは無効化しても処理自体に大きな影響はありませんが
      若干タイミングがズレた場合はWAITを調整してみてください。

コメントする

CAPTCHA


目次