やりたいこと
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.