はぢめてのChrome拡張ーマネーフォワードを便利にする


Chromeの拡張機能の勉強をするために、マネーフォワードの拡張機能を作りました。

マネーフォワードの拡張機能 moneyfoward extention

きっかけ

Chrome拡張で何かしたいなぁと思っていたところで、普段からPCのマネーフォワードを見ていて不便だなぁと思うことを改善するためにやってみました。必要は発明の母。

Chrome拡張の準備

などなど

使ったもの

  • JQuery 基本JQueryベースで作成しました。
  • Bootstrap オプションページなどで利用してます。

機能

現在までに作っている機能です。

メモ機能

我が家では毎月その月がどうだったのかを簡単に振り返りをしています。その振り返りの内容が話し合うだけでなくて何に気を付けるとかそういうことをちゃんと記録として残しておきたかったので、家計簿のページの下に毎月の家計に関してのメモが残せるようなメモ機能を作成しました。
Chromeのstorage機能でsyncに保存するので、Chromeでログインしていればデバイスが変わってもメモの内容を閲覧できます。
storage機能は結構簡単に使えるのでChrome拡張でもおススメの機能です。
manifest.jsonのpermissionsに

manifest.json
"permissions": [
    "storage"
  ],

と書いておけば、後はsetやgetで利用できます。
メモ機能は日付のキーとして利用しています。

memo.js
    //メモの保存
    memo[memoKey] = memoText;
    chrome.storage.sync.set(memo, function() {
        alert('メモを保存しました。');
    });
    // メモの取り出し
    chrome.storage.sync.get(dayMonth, function(result) {
        $('#memo_area').val(result[dayMonth]);
    });

storageの詳しい機能はこちら

期間収入合計を表示する


マネーフォワードの家計のメニューに[月次推移]があり、そこで毎月の収入と支出と収支の合計が6か月間表示されているのですが、結局6か月でいくらくらい貯蓄できてて、毎月平均どれくらい収支がプラスなのか?がよくわからないので、それを表示するようにしました。
これでここを見れば、お金がたまってる感は味わえるはずです。
ここはほんとにJQueryの機能だけで実現できています。難しいことはほとんどしていません。Chrome拡張ほんと簡単ですぐ改善できるので楽しい。

流動資産と固定資産を分けで表示

資産のページを見ると合計の資産はわかるのですが、流動資産がいくらで固定資産がいくらか?が項目ごとに合計しないとわからないので、それも表示するようにしました。また、マネーフォワードはあくまで個人のツールなので人によって保険とかは固定資産としていたり流動資産としたりする場合もあると思いますので、オプションページでそれを設定できるようにしています。

HTMLの読み込みについて

各機能を作るにあたり、複雑なHTMLをJQueryにべた書きしたくなかったので、HTMLファイルに別に保存し、ajaxを使って挿入するようにしました。これで、コードもだいぶ見やすくすることができました。
メモ機能のHTML

memo.html
<div id="memo">
    <form class="pure-form">
        <fieldset>
            <textarea id="memo_area" class="pure-input-1-2" placeholder="メモ" rows="10" maxlength="1000"></textarea>
            <p>1000文字まで入力可</p>
        </fieldset>
        <button id="btn_memo" class="pure-button pure-input-1-1 pure-button-primary">保存する</button>
        <a id="lnk_reload" style="margin-left: 10pt">リロード</a>
    </form>
</div>

HTMLをajax挿入する

memo.js
$(function(){
    var textareaUrl = chrome.extension.getURL("textarea.html");
    $.ajax({
        type:'GET',
        url: textareaUrl,
        datatype: 'html',
        success: function(data) {
            $('#daily-info-contents').after(data);
        },
        error:function() {
            alert('問題がありました。');
        }
    });
}

こんな感じで他のHTML部分も全部別にして別途ajaxでロードするようにしています。

まとめ

Chrome拡張は本当に簡単に作成できかつ、改善効果も大きいのでとてもおススメです。自分も初めてやってみてJSだけでさらっとできてしまうとは思ってませんでした。
皆さん良かったら是非拡張機能を使っていただき、こんな機能があったらなとかご意見くれると嬉しいです。