MFクラウド経費の明細をExcelから一括登録・更新する方法

# はじめに

本記事では、株式会社マネーフォワードが提供する[MFクラウド経費](https://biz.moneyforward.com/expense)の経費明細を[CData Excel Add-In](http://www.cdata.com/jp/excel/)を利用して一括して登録・更新する方法を説明します。

# 前提

- インターネットに接続可能なWindowsマシン
- Microsoft Office 2007以上
- [MFクラウド経費](https://biz.moneyforward.com/expense)のアカウント ※1ヶ月の無料試用版あり
- [CData Excel Add-In for MoneyforwardExpense](https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/Article/MFCloud/MFCloudExpenseExcelAddIn.exe) ※現在、利用期限付きのβ版でのご提供

# MFクラウド経費のAPIを利用するための準備

[MFクラウド経費APIドキュメント](https://github.com/moneyforward/expense-api-doc) の「認証について」の以下手順を実施して、Client IDとClient Secretを取得します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/5b54931b-03be-6ab5-13a6-3a508a77668a.png)

# CData 製品のインストール、および、初期設定

[CData Excel Add-In for MoneyforwardExpense](https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/Article/MFCloud/MFCloudExpenseExcelAddIn.exe)のビルドをダウンロードします。ダウンロードすると、インストールファイル（.exe）がダウンロードされます。インストーラーを起動してソフトウェア使用許諾契約書を確認してデフォルトのままインストールします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/3f1c8bab-539d-cc9f-d4c2-ecd6bec91364.png)

（注意） オンラインアクティベーションのためインターネットへの接続が必要となります
（注意） Excelを閉じた状態でインストールを行なってください

インストールが完了したら、Excelを起動してください。CDATAタブが追加されて「取得元 MoneyForwardExpense」のアイコンが追加されていることを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/d5de5eae-3e39-1261-9370-8204ba78a128.png)

「取得元 MoneyForwardExpense」のアイコンをクリックします。接続ウィザードが起動するので下記の項目をセットします。

| 項目 | 値 | 備考 |
|:-----------------|:------------------|:------------------|
| OAuth ClientId | *********************************** | MFクラウド請求書でアプリケーション登録時のClientId |
| OAuth Client Secret | *********************************** | MFクラウド請求書でアプリケーション登録時のClient Secret |
| Callback urls | https://localhost:33333 | MFクラウド請求書側のアプリケーション登録時のCallback urls |
| logfile | C:\Program Files\CData\CdataMoneyForwardExpense.log | (任意)CDataのログファイルを出力する場合、出力パスを指定 |
| verbosity | 1 | (任意)出力するCDataのログファイルレベル。通常は1,エラー調査時は3 |

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/9ed56b83-7129-b6cb-e509-1661fbf62794.png)

「接続のテスト」ボタンをクリックします。ブラウザが起動して、MFクラウド請求書のログイン画面が表示されるので、MFクラウド請求書へのユーザIDおよびパスワードを入力してログインします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/c8dbb3bc-0b68-9abf-c331-a34b219d105c.png)

すると下記のような認証が出来た旨の画面と接続に成功して旨のダイアログが表示されれば、MFクラウド請求書へのAPIアクセスに必要なOAuthによる認証認可のプロセスが完了したことになります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/61c8c8f8-911e-7e50-cf59-744172ecb411.png)

ダイアログの「OK」ボタンで閉じて、「接続ウィザード」のダイアログ画面も「OK」ボタンをクリックして閉じます。

# 経費明細の一覧取得

「CDataデータ選択」ダイアログが表示されるので、テーブル名を「Transactions テーブル」を選択、必要に応じて最大行数（デフォルト：100行）を変更、列から下記の項目を選択して、「OK」ボタンをクリックします。

| 項目 | 備考 |
|:-----------------|:------------------|
| Id | 経費明細ID （デフォルトON） |
| OfficeId | 事業所ID （デフォルトON） |
| Remark | 支払い先・内容 |
| Value | 金額 |
| ItemId | 経費科目 |
| RecognizedAt | 日付 |
| Memo | メモ等 |

クエリーには下記のSQLが自動で生成されます。

```sql
SELECT [CData].[MoneyForwardExpense].[Transactions].[Id], [CData].[MoneyForwardExpense].[Transactions].[OfficeId], [CData].[MoneyForwardExpense].[Transactions].[Remark], [CData].[MoneyForwardExpense].[Transactions].[Value], [CData].[MoneyForwardExpense].[Transactions].[ItemId], [CData].[MoneyForwardExpense].[Transactions].[RecognizedAt], [CData].[MoneyForwardExpense].[Transactions].[Memo] FROM [CData].[MoneyForwardExpense].[Transactions] LIMIT 100
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/c32810f0-f4c1-09bd-36cd-958fcbd42cda.png)

経費明細のリストが取得出来ました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/4173c4a5-49f1-d129-40b5-7206c6f14379.png)

（Memo）上記は、事業所全体の経費明細です。現在、自分の経費明細のみ取得出来るテーブルを別途準備中です。

# 経費明細の一括登録

次に、本Excelファイルから経費明細を一括して登録して見ましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/3c5909d8-3de4-d2d3-6afc-6b4ed472750b.png)

以下の内容で数レコード登録してみます。

| 項目 | 備考 |
|:-----------------|:------------------|
| OfficeId | 既存のレコードのOfficeIdを参照 |
| Remark | 「JR東日本」と指定 |
| Value | 新幹線代の「11000」と指定 |
| ItemId | 既存の「電車代」に該当する経費科目のIdを参照 |
| RecognizedAt | 出張日を指定 |
| Memo | 移動経路を指定 |

MFクラウド経費のサービス側に反映されてないセルは赤文字となります。追加したレコードを選択して、CDATAメニューバーの「行の挿入」ボタンをクリックします。下記のエラーダイアログが表示されますが、「OK」ボタンをクリックして閉じます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/223c11e7-55c2-df8d-1a09-012bc27062b0.png)

(Memo)修正予定

CDATAメニューバーの「ワークシートのリフレッシュ」ボタンをクリックします。追加したレコードの赤文字が黒に変わっていれば、MFクラウド経費のサービス側に反映されています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/e7b7fd92-0cf7-7960-a44c-1c2a6400ee03.png)

それでは、WebブラウザでExcelから追加した明細が追加されているか確認してみましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/4b617d51-a89d-357e-4559-3191dbbb833f.png)

# 経費明細の一括更新

同じ交通費なのに、支払い先・内容（Remark）が、「東日本旅客鉄道株式会社」と「JR東日本」と不統一なのに気がつきました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/38729df0-483e-2a48-96f2-49dd1035c422.png)

Excelの「検索と置換」機能で「JR東日本」を正式名称である「東日本旅客鉄道株式会社」に一括置換します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/c508e6db-ea9f-1fcb-4ff2-29a58c7f6afa.png)

シートの全セルを選択した状態でCDATAメニューバーの「行の更新 > すべての更新」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/69a17a63-78a9-14bc-dd98-8ccf8ca7d916.png)

下記のエラーダイアログが表示されますが、「OK」ボタンをクリックして閉じます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/223c11e7-55c2-df8d-1a09-012bc27062b0.png)

(Memo)修正予定

CDATAメニューバーの「ワークシートのリフレッシュ」ボタンをクリックします。変更した支払い先・内容（Remark）の赤文字が黒に変わっていれば、MFクラウド経費のサービス側に反映されています。Webブラウザで支払い先・内容（Remark）が反映されているか確認してみます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/d4782c4f-0b67-af27-342c-26ba061d4ddd.png)


# まとめ

本記事では、MFクラウド経費の明細をCData Excel Add-Inを利用してExcelから一括して登録・更新する方法を説明しました。是非、ご利用いただければ幸いです。

# 特記事項

現在(2018/02時点)、MFクラウド経費のAPI、および、CData Excel Add-Inは、β版での提供です。