GAS:GoogleAppsScript会計金融税務財務

マネーフォワードクラウド会計とAPI接続した自作アプリは「GAS×Gemini」の売上分析AIダッシュボードです

この記事は約6分で読めます。

マネーフォワードクラウド会計をGASでアプリ分析会計ソフトを使っていて、「過去数年分の売上推移や得意先ごとの長期的なトレンドを、もっと簡単に比較・分析したい」と感じたことはありませんか?
標準機能では単年度の分析が中心になることが多く、複数年のデータを並べて俯瞰するには少しもどかしさがありました そこで、GAS(Google Apps Script)を使ってマネーフォワードクラウド会計のAPIからデータを自動取得し、さらに生成AIのGeminiを連携させて、自分専用の「売上分析AIダッシュボード」を開発することに挑戦しました。
この記事では、発想からアプリ完成に至るまでの経緯と、立ちはだかった壁の乗り越え方を共有します。同様の自動化やデータ活用を考えている方のヒントになれば幸いです。

マネーフォワードクラウド会計×GAS×Gemini開発全体像

基本的にノーコード開発です

今回構築したシステムの流れは、大きく分けて以下の4つのステップです。

  1. データ取得(マネーフォワードAPI → GAS)

    マネーフォワードクラウド請求書API(v3)にアクセスし、請求書(売上)のデータを取得します。

  2. データの蓄積(GAS → スプレッドシート) 取得した「請求日」「得意先名」「請求金額」などのデータを、Googleスプレッドシートに書き出してデータベースとして活用します

  3. グラフによる可視化(GAS Webアプリ)

    スプレッドシートのデータを集計し、HTMLとJavaScript(Chart.jsなど)を使ってブラウザ上にグラフを表示します。

  4. AIによる分析(GAS → Gemini API)

    集計した数年分のデータをGemini APIに送信し、プロの経営コンサルタントの視点で分析・要約させます。

そして、最も重要なことは「ノーコード開発」だということです。

私はエンジニアではないので、わからないことはすべてGeminiに質問し、その回答としてコードを書いてもらいました。最終的には一行も自分でコードを書いていません。
「コード.gs」と「index.html」は全文出力してもらい、それをGASの画面にコピペしただけというやり方です。

ノーコードでちょっとした開発ができるようになったのは生成AIの進化ですね。

立ちはだかるAPI連携の壁と、乗り越えたエラーの数々

開発を進める中で、最も苦労したのは「最初のAPI認証(OAuth2.0)」と「データの全件取得」のステップでした。API連携は、1文字違うだけでも弾かれてしまうシビアな世界です。私がつまずいたポイントとその解決策をご紹介します。

リダイレクトURIの罠

GASのOAuth2ライブラリを使用して認証する際、マネーフォワード側に登録する「リダイレクトURI」の設定でエラーが頻発しました。

  • 失敗: Webアプリとしてデプロイした時のURL(末尾が /exec のもの)を設定してしまい、認証エラーになりました。

  • 失敗: 正しい形式に直したものの、スクリプトIDに含まれる「I(大文字のアイ)」と「l(小文字のエル)」を見間違えて入力してしまい、「アプリが一致しない」と弾かれました。

  • 解決: 目視での確認をやめ、GAS側で service.getRedirectUri() という関数を実行し、システムが求めている100%正確なURIをログに出力させました 。それをそのままマネーフォワードの設定画面にコピー&ペーストすることで突破できました。

接続先サーバーと権限(スコープ)の相違

マネーフォワードのAPIには、個人用・ビジネス用、また新旧のバージョンが存在します。

  • 失敗: ビジネス用のClient IDを取得したのに、古い標準サーバーの入り口(エンドポイント)に接続しようとして拒否されました。

  • 失敗: 請求書APIの最新バージョン(v3)に対して、古いバージョンの権限名(スコープ)を指定してしまい、エラーになりました。

  • 解決: 接続先のURLをビジネス用のもの( api.biz.moneyforward.com )に修正し 、スコープを最新の仕様である mfc/invoice/data.read に設定し直すことで、無事に認証が通りました

「最新100件」と「過去の全データ」の統合

APIからデータを取得する際、一度に取得できる件数には上限(100件)があります。過去数年分のデータを遡って取得しようとした際、ページネーション(次ページへの移動)の処理や、日付による絞り込みの指定でうまくデータが取れない現象に悩まされました

  • 解決: APIの検索機能に頼り切るのではなく、運用方針を少し変えました。

    • 過去のデータ: マネーフォワードの画面からCSVでエクスポートし、スプレッドシートに一度だけ手動で貼り付ける。

    • 日々の新しいデータ: GASを実行するたびに「最新100件」を取得する。

    • データの統合: GAS内で、手動で入れた過去分と新しく取得した最新分を「請求書番号」をキーにして結合させ、重複しているものは自動で上書き・削除して日付順に並べ替える

    この「手動と自動のハイブリッド方式」を採用したことで、APIの挙動に振り回されず、常に最新の全データが手元に残る安定したシステムを作ることができました。

完成したAIダッシュボードの全貌

数々のエラーを乗り越え、ついに実用レベルのダッシュボードが完成しました。

📊 グラフによる直感的な可視化

Webアプリを開くと、スプレッドシートに蓄積されたデータを基に、美しいグラフが描画されます。

  • 年度別・月別売上推移:棒グラフ(単月)と折れ線グラフ(累積)を組み合わせることで、今年度と前年度の推移をひと目で比較できるようになりました。

  • 得意先別 累積売上ランキング:上位の得意先ごとの売上を、今年度と前年度(同月まで/以降)で色分けして比較できる横棒グラフを実装しました。どの顧客が成長しているかが視覚的にわかります。

✨ GeminiによるAIコンサルティング

さらに、ダッシュボード上に「AIに分析を依頼する」ボタンを設置しました。集計したデータをGemini(Flash-Liteモデル)に送信することで、以下のようなインサイトを得ることができます。

  1. 全体の推移(月別トレンド):前年と比較した売上の傾向や、特定の月における落ち込みの要因などを要約。

  2. 得意先別の動向(成長顧客や課題顧客):売上構造に大きく影響している上位の得意先をピックアップし、大幅に伸長した顧客や、落ち込んでいる顧客の動向を分析。

  3. 総括と今後のアクション:特定月への過度な依存からの脱却、安定性の低い月への下支え強化、優良顧客へのアップセル提案など、次年度以降の持続的な成長に向けた具体的な戦略案の提示。

自作して見えた新しい景色

最初から完璧なシステムを作ろうとすると挫折しがちですが、エラーの原因を一つ一つ探り、少しずつ形にしていく過程は非常に大きな学びになりました。

「マネーフォワードのAPI × GAS × 生成AI」の組み合わせは、状況を可視化するだけでなく、次のアクションを考えるための強力なコンサルタントを手に入れることと同義です。

今回の私の経験が、これから業務の自動化やデータ分析に取り組もうとしている方の背中を少しでも押すことができれば嬉しいです。