銀行明細を会計システムに取り込みたい

最近の会計システムでは銀行口座と連携して明細を取り込む機能がついていることも多くなってきました。自前の会計システムでも銀行明細が取り込めると便利ですね。今回は、PowerAutomateを利用してOneDrive上に保存されているCSV形式の銀行明細をリストに取り込む方法をご紹介いたします。

CSVを用意する

以下はリストに取り込む銀行明細のサンプルです。CSV形式ですが、後の作業の都合で、カンマ区切りの数字をカンマ区切り無しに加工しています。

PowerAutomateで使用する場合は文字コードをUTF8の形式にした方が都合が良いので、メモ帳の「名前を付けて保存」のメニューを実行し、”UTF-8(BOM付き)”で保存しておきます。

SharePoint上にリストを作成する

次に、用意したCSVを使ってあらかじめ作成しておいたチームサイト上にSharePoint上にリストを作成します。チームサイトの「新規」メニューをクリックし「リスト」を選択します。

「CSVから」をクリックします。

「ファイルのアップロード」をクリックし、用意したCSVファイルを読み込んだら「次へ」のボタンをクリックします。

作成するリストの名前は”銀行明細”とすることにしました。名前を入力して「作成」ボタンをクリックします。

以下のようにリストが作成されました。この後、Power Automateを使ってリストにデータを追加するように設定するので一旦データはすべて消しておきます。

Power Automateを使ってCSVをリストに読み込む

準備が整ったのでPower Automateの画面からフローを作成していきましょう。「新しいフロー」メニューの中から「インスタントクラウドフロー」を選択します。

「スキップ」をクリックします。

画面上にある「トリガーの追加」をクリックします。

画面左側で”onedrive”で検索すると、トリガーが検索できます。今回は「OneDrive for Business」の中にある「ファイルが作成されたとき」を選択します。

「ファイルが作成されたとき」のフォルダーの設定をします。今回は”ドキュメント”の下にフォルダを作成してそこを指定しました。

次にいくつか変数を使用するので、「変数を初期化する」アクションを追加していきます。

以下は、一つ目のアクションを追加したところです。今回追加する変数は以下の3つです。

  • CSVファイルコンテンツ ・・・CSVファイルの中身のデータを保存する変数
  • 行データ・・・CSVファイルの行データを一時的に保存する変数
  • 行カウンタ・・・何行目を読み込んだかをカウントする変数

まず、CSVファイルコンテンツですが、設定を以下のようにしました。「Type」は”Array”、「Value」は”split(triggerBody(), decodeUriComponent(‘%0D%0A’))”としています。decodeUriComponent(‘%0D%0A’)の部分は改行を意味しています。

残り二つの変数は以下のように設定しています。繰り返し処理の中で使用する変数の為、値は設定していません。

次に「それぞれに適用する」アクションを追加していきます。読み込んだCSVファイルの各行に対応する処理を実行するためです。「アクションの追加」で「Control」を選択します。

「それぞれに適用する」を選択します。

ここで”行カウンタ”をカウントする処理とCSVファイルの2行目以降を処理する判定を追加していきます。これは、CSVファイルの中にヘッダーが入っているためエラーになるのを避けるための処理になります。

行カウンタをカウントする処理は先ほど変数を初期化する処理を追加しましたが、それを利用して以下のようにしました。

そして、行カウンタが1より大きい場合(つまり2行目以降の場合)にのみ処理を実行するように設定します。

全体の処理の流れは以下のようになりました。

次に、行データを取得するアクションを追加していきます。

「Value」には”split(item(),’,’)”と設定し、現在読み込んだ行に対してカンマで分割して配列を作成しています。

最後にSharePoint上のリストに項目を追加するアクションを追加します。「アクションの追加」から”sharepoint”で検索します。

出てきたアクションの中から「項目の作成」を選択します。

「サイトのアドレス」と「リスト名」を設定し、詳細パラメーターの「すべてを表示」をクリックします。

リストの各項目に設定する値は”variables(‘行データ’)?[0]”のようにします。[0]の部分の数字は列の位置に応じて変更してください。

完成すると以下のようなフローになりました。

テスト実行した様子ですが、指定したフォルダにCSVファイルをアップすると実行されます。

実行した結果がこちらです。

リストを確認すると以下のようにデータが追加されています。

リストに保存できれば、集計などほかの用途にも活用の幅が広がりますね。本来であれば銀行明細を取得するところから自動化できれば良いのですが現在ではまだ不可能なようです。今後良いアイデアが出てきた場合は共有させていただきます。

如何でしたか。皆様のご参考になれば幸いです。