Money Forward MEの内容を家族で共有するためにPower Automateを使う

Money Forward ME の内容を、月1で家族と共有したい。そのために、Money Foward ME 内の様々な画面キャプチャー画像を、1冊の Excel ブック内にスクラップブック化したい。これを Power Automate を使ってできるようにしてみた。

やりたいこと

Money Forward ME の内容を、月1で家族と共有したい。
かといって、そのIDとパスワードを家族と共有することはセキュリティ上よろしくない。別案として、Money Foward ME 内の様々な画面キャプチャー画像を、1冊の Excel ブック内に複数シートに分けつつスクラップブック化してから共有することにした。
しかしこれを手動でやるとなると、けっこう面倒な作業となる。Money Foward ME で共有したい画面は約10種類あるため、作業が煩雑になるためだ。
このため、Power Automate を使ってこの作業をほぼ自動化したい。

(追記)
なお、URLに年月を含むウェブページについては、前月のページを表示させたい。

環境

  • Money Foward ME のアカウント状態: プレミアムサービス スタンダードコース
  • OS: Microsoft Windows 11 Pro バージョン 22H2
  • RPA: Microsoft Power Automate 2.34.0296.23193 ※デスクトップ版
  • ウェブブラウザー: Microsoft Edge 115.0.1901.188 (公式ビルド) (64 ビット)
  • Edge 拡張機能: Microsoft Power Automate 2.34.0.17
  • 画面ショットの貼り付け先として使うソフト: Microsoft Excel for Microsoft 365 MSO (バージョン 2306 ビルド 16.0.16529.20164) 64 ビット

やったこと

ウェブブラウザーの選定

今回は自動化対象のウェブブラウザーとして、Edge を使うことにした。Edge なら、Power Automate 内にはじめから専用の起動アクションが備わっているためだ。
私が普段使いしているウェブブラウザーは Vivaldi だが、Power Automate 内には残念ながら Vivaldi 専用の起動アクションが備わっていない。なので、今回は使わないことにした。

準備 ※大まかな環境を除く

  • 共有したい口座情報を絞りたい場合は、Money Forward ME 内で「グループ設定」しておく。
  • Edge には、拡張機能 “Microsof Power Automate” を予めインストール・有効化しておく。

フローの作成

Power Automate を起動し、[新しいフロー]をクリック。

編集画面にて、以下のような感じで作成。

フローの概要

メインのフローと複数のサブフローに分けた。

メインのフローでは Excel やら Edge やらを起動し、手動で準備しなくてはならないところはメッセージボックスで自分自身に作業を促し(笑)、サブフローを順次呼び出し、最後にはファイル名に日付を入れてデスクトップに保存したり、片づけを行ったりする。
(追記)URLに年月を含むウェブページについては、前月のページを表示させるようにする。
このように、Money Forward ME へのログイン作業やグループ選択、出力対象年月の変更を Automate にやらせるのは少なくとも私には難しかったため、都度手動で行うこととした。

サブフローでは、Money Forward ME の撮りたいページを全画面スクリーンショットで撮っては Excel の新規シートに張り付けるという動きを行う。

フローの詳細

フローの画面ショット(一部)

Robinコード

実態となるコードは以下の通り。 ※ユーザー名などは変更済み
これは、Power Automate 上のフロー内にてアクションを全選択してから[コピー]して得られたもの。

これら各コードを Power Automate の編集画面内の対象フロータブの配下に貼り付けることで、同じフローとして復元できるっぽい。ただし、Main フロー以外については、貼り付け先の器となる各サブフローは予め手動で作っておく必要はある。

Main
EExcel.LaunchExcel.LaunchUnderExistingProcess Visible: True Instance=> ExcelInstance
WebAutomation.LaunchEdge.LaunchEdge Url: $'''https://sensei.moneyforward.com/''' WindowState: WebAutomation.BrowserWindowState.Maximized ClearCache: False ClearCookies: False WaitForPageToLoadTimeout: 60 Timeout: 60 BrowserInstance=> Browser0
WebAutomation.CreateNewTab.CreateNewTab BrowserInstance: Browser0 Url: $'''https://moneyforward.com/cf''' WaitForPageToLoadTimeout: 60 NewBrowserInstance=> Browser
Display.ShowMessageDialog.ShowMessage Title: $'''事前準備をしてください''' Message: $'''表示された Edge で、以下を実行してください。
 ※既にそうなっている場合を除く

・Money Forward ME にログインしてください。
・グループ選択を「家族レポート」に変更してください。
・出力したい対象の年月(通常は前月)に変更してください。
・「おかねせんせい」にも別途ログインしてください。

上記が完了したら、[OK] を押してください。

(注)本フロー実行中は、マウスカーソルを端の方にどけて、何も操作しないでください。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed
# URLの中に年月が含まれているものについて、前月のURLを指し示すようにするための日付関連のブロック。
DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateOnly CurrentDateTime=> CurrentDateTime
DateTime.Add DateTime: CurrentDateTime TimeToAdd: -1 * (CurrentDateTime.Day - 1) TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ResultedDate
DateTime.Add DateTime: ResultedDate TimeToAdd: -1 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ResultedDate2
Text.ConvertDateTimeToText.FromCustomDateTime DateTime: ResultedDate2 CustomFormat: $'''yyyy/M''' Result=> FormattedDateTime2
CALL 口座
CALL 入出金
CALL 収支内訳
CALL 月次推移
CALL 資産内訳
CALL 資産推移
CALL 負債
CALL バランスシート
CALL レポート
CALL 家計診断
CALL おかねせんせい
Excel.DeleteWorksheet.DeleteWorksheetByName Instance: ExcelInstance Name: $'''Sheet1'''
Text.ConvertDateTimeToText.FromCustomDateTime DateTime: CurrentDateTime CustomFormat: $'''yyyyMMdd''' Result=> FormattedDateTime
Excel.SaveExcel.SaveAs Instance: ExcelInstance DocumentFormat: Excel.ExcelFormat.FromExtension DocumentPath: $'''C:\\Users\\takek\\OneDrive\\デスクトップ\\MoneyForwardME_%FormattedDateTime%.xlsx'''
Display.ShowMessageDialog.ShowMessage Title: $'''グループ選択を「グループ選択なし」に変更してください。''' Message: $'''・グループ選択を「グループ選択なし」に変更してください。

上記が完了したら、[OK] を押してください。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed1
WebAutomation.CloseWebBrowser BrowserInstance: Browser0
WebAutomation.CloseWebBrowser BrowserInstance: Browser
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser1
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser2
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser3
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser4
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser5
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser6
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser7
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser8
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser9
WebAutomation.CloseWebBrowser BrowserInstance: NewBrowser10
各種サブフロー (例)[口座]サブフロー
WebAutomation.CreateNewTab.CreateNewTab BrowserInstance: Browser Url: $'''https://moneyforward.com/accounts''' WaitForPageToLoadTimeout: 60 NewBrowserInstance=> NewBrowser
WebAutomation.TakeScreenshot.TakeScreenshot BrowserInstance: NewBrowser
Excel.AddWorksheet Instance: ExcelInstance Name: $'''口座''' WorksheetPosition: Excel.WorksheetPosition.Last
Excel.PasteCellsToExcel.Paste Instance: ExcelInstance
各種サブフロー (例)[レポート]サブフロー

URLに年月を含むウェブページの画面キャプチャーとExcelへの張り付け

WebAutomation.CreateNewTab.CreateNewTab BrowserInstance: NewBrowser7 Url: $'''https://moneyforward.com/analysis/monthly_reports/%FormattedDateTime2%''' WaitForPageToLoadTimeout: 60 NewBrowserInstance=> NewBrowser8
WebAutomation.TakeScreenshot.TakeScreenshot BrowserInstance: NewBrowser8
Excel.AddWorksheet Instance: ExcelInstance Name: $'''レポート''' WorksheetPosition: Excel.WorksheetPosition.Last
Excel.PasteCellsToExcel.Paste Instance: ExcelInstance

結果/所感

意図した通り、1冊のExcel にシート別に各種スクリーンショットを貼り付け、保存することができた。各ウェブページが最後まできちんとスクロールされてキャプチャーされている。

今後の課題

ループ処理できるところはループ処理する。etc.

タイトルとURLをコピーしました