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
Windows 11は「Power Automate Desktop」を標準搭載 ~インストール不要でRPAを始められます。
自動スクリーンショットフロー実装手順
下のコードがフローのコードになります。
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です。
追加するUI要素はKindleのWindow要素となります。
まずはKindleアプリを起動してスクリーンショットを撮りたい電子書籍を表示させておきます。デスクトップ左側に配置しておくと作業がしやすいです。
下の画像の赤で囲った部分のボタンをおします。
UI要素の追加ボタンをクリックします
マウスをKindleアプリの上に移動させて、下の画像の様にWindowと赤で表示され大きく囲まれる状態に上手く位置どりしてコントロールキーを押してUI要素を取得します。動画でも苦労していますが少し操作が難しいです。
画面右のUI要素ボタンをクリックし、①要素をダブルクリックします、その後表示されたセレクターの②文字部分をダブルクリックします。
セレクタービルダーが表示されるので、赤で囲ったName属性の演算子を「含む」に変更し値を「Kindle」にします。
最後に三点ボタンで名前の変更を選択してWindow名を’Kindle’にします。するとフローのエラーが二つとも消えて作業完了です。エラーが消えなかったら手順を見直してください。
自動スクリーンショット取得手順
Kindleアプリを画面左に配置しスクリーンショットを取得する大きさに調整します。
Power Automate Desktopを画面右に配置します。
再生ボタンを押すと、何回スクリーンショットを取得するのか?デスクトップににスクショファイルを保管するフォルダがなければ作成の指示、ページの右開きか左開きかの確認が表示されます。
必要項目の確認が終わったらスクリーンショットが始まります。
スクリーンショット中はマウス操作は行わないでください。
スクリーンショットの自動取得処理が完了すると、終了の旨メッセージが表示されますので、デスクトップにある「screenshotFolder」を開いて中の画像を確認しましょう。
トリミング処理
XnConvertを使ってトリミング処理しています。
インストールされていなければ、以下のページよりダウンロードしてインストールしてください。
一括処理で画像のトリミングやいろいろな変更を行ってくれるアプリとなっています。
この記事では一括トリミング用に使っていますが本記事の動画を参考にしていただければと思います。
上下左右からトリミング領域を指定して一気にトリミングさせます。
PDF化処理
Windows10 標準の「Microsoft Printer to PDF」を使って印刷処理して一気にPDF化します。
まとめ
無料で使えるRPAアプリとしてMicrosoft がWindows10以降のOSでPower Automate Desktopを無料で使える様にアナウンスしてから1年くらいがたちました。この記事ではこれを利用して電子書籍アプリのスクリーンショット取得自動化を行いました。コーディングなしでこの機能を実装できるのであればRPAいいな!っておもいます。
コメント
コメント一覧 (11件)
こんにちは。
大変貴重な情報をご提供いただきありがとうございます。
本日情報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を調整してみてください。
素晴らしい機能のご紹介をありがとうございます。
とても便利に使わせていただいております。
一つ質問なのですが、ファイル名の連番の部分を3桁表示(001,002,003…010…)にしたくて調べてみたのですが素人には解決ができませんでした。
ファイル名の並べ替えのときに1桁数字だと1→10 と並べ替えてしまうソフトがいくつかありまして、リネームをかければ済むことなのですがもしスクショ時に3桁にできるのであればそうしたいなと思った次第です。やり方があればアドバイスいただけますとありがたいです。
動画を見ながらすこしいじってみて、ブラウザ版の電子書籍(dmmなど)でも使うことができるようになりました。感謝です!
こんにちは。
資格の講座の電子テキストを視聴期限後も個人的に読める状態にしておきたくて調べていたところ、こちらのサイトに辿り着きました。
kindleのようなアプリではなく検索ブラウザからしか開けない電子書籍でもこちらの方法は使えますでしょうか?
windows上でandroidエミュレータを動かしてStudyplusというアプリの自動スクリーンショットを行いたいのですが、kindleのみの対応でしょうか?
こんにちは。
紹介されている手順で無事PDF化に成功しました。
ありがとうございます。
スクショ画像をPDF化した書籍は若干画質が落ちてるように感じるのですが、何かいい解決策はありますでしょうか。