「ヨドバシ・ドット・コム」でモノを買ったときの問題点と対策。

  • URLをコピーしました!

ヨドバシ・ドット・コムでモノを買ったときに経費にするものもあるでしょう。
現状の問題点とやっている解決策をまとめてみました。

目次

ヨドバシカメラで本を買うケース

ネットで買い物をするときに、どこで買うか?

わたしはAmazon、楽天、ヨドバシなど使い分けています。
例えば、ヨドバシで本を買うとポイントが最大で12%還元。(ヨドバシのゴールドポイントカード+を利用している場合で段階的にポイントがつきます。)

すぐに読みたい本があれば、Amazonで買うことが多いですが、そうでなければヨドバシで買っています。
ただ、ヨドバシで買うときに悩ましいこともあるのです。

それが経理。
Amazonや楽天のようにクラウド会計で経理するときに、データ連携ができないのです。(わたしの知る限り)。

Amazonで本をカード決済で買った場合、Amazon(Amazonビジネス)から購入明細のデータを連携でき、内容を入力する必要がないのです。クレジットカードからも同じ取引データが連携されてくるのですが、

・Amazon:2/19 新聞図書費/Amazon 1500
・クレジットカード:2/19 Amazon/クレジットカード 1500

と2つのデータで1つの仕訳(2/19 新聞図書費/クレジットカード 1500)になるようにしています。
登録だけすれば済むので、入力をしなくてもいいわけです。

ヨドバシはクラウド会計のデータ連携がないので、これができません。
ヨドバシを利用するなら、経理の負担は減らしたいものです。

ゴールドポイントカード+のCSVをインポート

ヨドバシのカード、ゴールドポイントカード+のサイトにログイン後、「ご利用明細の照会」をクリックすると、

カードの英才が表示されます。スクロールすると、

CSVファイルをダウンロードすることができるので、これを使いましょう。

CSVファイルをダウンロードできれば、あとは何とでも。

マネーフォワードの場合だと、連携の対象になっていないサービスでもCSVファイルを取り込むことができます。

ただ、項目をいちいち設定しないといけないのはめんどくさいのですが、そこは息を止めてやります。

あとは、データ連携→登録済一覧から「科目設定」をクリックし、取り込むときの科目を決めておきます。

これでカードの明細をインポートできるのですが、カンのいい方は気づかれたかもしれません。摘要がすべて「ヨドバシドットコム」となっていることに。

これだと明細がわからないので、明細のあるデータをとってきたいところ。
今回はGASを使いました。

GASでGmailからデータ抽出

ヨドバシでモノを買うと、注文確認のメールが届きます。
自動返信メールだと通常、表示にルールがあるので、Gmailのメール本文からデータを抽出するようにしました。

日付、金額、内容が抽出できれば充分でしょうけど、今回は仕訳データとしてインポートしたいので、仕訳のカタチでスプレッドシートに書き出すようにしました。

こんな感じでコードを書いています。(ChatGPTに聞きつつ)GASを最初に実行するときの注意点は、こちらの記事を見ていただければ。
GAS(Google App Script)でGmailの必要部分だけを抽出する方法。 | GO for IT 〜 税理士 植村 豪 OFFICIAL BLOG

コードはこちらに(抽出日数、科目はお好みで)
function yodobashi_books(days){

  // 今日を含めて何日さかのぼるか(希望で数字を変える)
  days = days || 60;

  const sp = SpreadsheetApp.getActiveSheet();
  sp.clear();

  // 出力列
  sp.appendRow(['日付','借方勘定科目','貸方勘定科目','貸借金額','摘要']);

  // Gmail検索開始日(todayを含めるので days-1)
  const past = new Date();
  past.setDate(past.getDate() - (days - 1));
  const after = Utilities.formatDate(past, 'JST', 'yyyy/MM/dd');

  // 件名で限定
  const q = 'subject:"ヨドバシ・ドット・コム:ご注文ありがとうございます" after:' + after;

  const threads = GmailApp.search(q, 0, 200);
  const msgs = GmailApp.getMessagesForThreads(threads);

  for (let i = 0; i < msgs.length; i++){
    for (let j = 0; j < msgs[i].length; j++){

      const m = msgs[i][j];

      if (m.getSubject() !== 'ヨドバシ・ドット・コム:ご注文ありがとうございます') continue;

      const b = m.getPlainBody();

      // --- ご注文日 ---
      const d = b.match(/・ご注文日\s+(\d{4})年(\d{2})月(\d{2})日/);
      const date = d
        ? ${d[1]}/${d[2]}/${d[3]}
        : Utilities.formatDate(m.getDate(), 'JST', 'yyyy/MM/dd');

      // --- 支払額(今回のお買い物合計金額) ---
      const a = b.match(/今回のお買い物合計金額\s+([0-9,]+)\s*円/);
      if (!a) continue;
      const amount = a[1].replace(/,/g, '');

      // --- 【ご注文商品】ブロック抽出 ---
      const block = (b.match(/【ご注文商品】([\s\S]*?)(?:\n【|\r\n【|$)/) || ['', ''])[1];

      // 商品行(先頭「・」)のみ取得
      // 「:」を含む行は除外(配達料金など)
      const items = block.split(/\r?\n/)
        .map(s => s.trim())
        .filter(s =>
            /^・/.test(s) &&
            !/^・合計/.test(s) &&
            !/^・-+/.test(s) &&
            !/:/.test(s)
        )
        .map(s => s.replace(/^・\s*/, ''));

      const memo = items.join(' / ');

      // --- 仕訳出力 ---
      sp.appendRow([date, '新聞図書費', 'ヨドバシ', amount, memo]);
    }
  }
}

これだと買ったモノの内容がわかる状態でデータにできます。あとはスプレッドシートのメニュー「ファイル」→「ダウンロード」で、CSVファイルで書き出して、会計ソフトにインポートすることができます。

マネーフォワードの場合、見出しをあわせても貸借金額が認識されないという謎仕様がありますけど、まぁそれはそれとして。

これでAmazonの場合と同じようなしくみはつくれます。

・Gmail(ヨドバシ注文メール):2/19 新聞図書費/ヨドバシ 1500
・ゴールドポイントカード+:2/19 ヨドバシ/クレジットカード 1500

まぁ、カードのCSVインポートをしない道もありますけどね。アプリでやる方法もあるのかもしれませんけど、そこはどう経理をするか?の好みで。

ということで。じぶんで経理をするなら、いかに入力の手間を減らすか?を工夫してみましょう。
今回のようにどこかにデータがあるなら、入力しなくてもいいわけで。

めんどくさいと思ったら、効率化のチャンスです。


【編集後記】
昨日は相続関係で土地評価を。
午後には外出、ドライブして
写真撮影を楽しみました。

夜はマリオテニスフィーバーを
長男(11)と。
事前に練習していたのですが、
ドロップショットとロブを
巧みに使い分けられて敗れました…。

スタートはいっしょですからね。
腕を磨いてやり返そうかと。

【昨日の1日1新】
※「1日1新」→詳細はコチラ
スタバ 桜 咲くよ 白桃 フラペチーノ


この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次