メルカリ 販売記録

販売履歴を取り込む

📌 ブックマークレットで一括取込

Safariでメルカリの販売済み商品一覧ページを開き、ブックマークレットをタップすると自動で取り込みます。

(function() {
  // メルカリの販売済みアイテムページかチェック
  if (!location.href.includes('mercari.com')) {
    alert('メルカリのページで実行してください');
    return;
  }

  var items = [];

  // __NEXT_DATA__ からデータを取得を試みる
  var nextDataEl = document.getElementById('__NEXT_DATA__');
  if (nextDataEl) {
    try {
      var nextData = JSON.parse(nextDataEl.textContent);
      var pageProps = nextData?.props?.pageProps;
      var listings = pageProps?.items || pageProps?.listings || pageProps?.data?.items || [];
      listings.forEach(function(item) {
        items.push({
          mercari_id: item.id || item.itemId || '',
          title: item.name || item.title || '',
          sale_price: item.price || item.soldPrice || 0,
          sold_at: item.updated || item.soldAt || '',
          image_url: item.thumbnails?.[0] || item.imageUrl || '',
          description: item.description || '',
        });
      });
    } catch(e) {}
  }

  // DOMからも取得を試みる
  if (items.length === 0) {
    var cards = document.querySelectorAll(
      '[data-testid="item-cell"], [class*="item"], li[class*="Item"]'
    );
    cards.forEach(function(card) {
      var titleEl = card.querySelector('[class*="name"], [class*="title"], h3');
      var priceEl = card.querySelector('[class*="price"], [class*="Price"]');
      var imgEl = card.querySelector('img');
      var linkEl = card.querySelector('a[href*="/item/"]');
      var mercariId = '';
      if (linkEl) {
        var match = linkEl.href.match(/\/item\/(m\w+)/);
        if (match) mercariId = match[1];
      }
      if (titleEl || priceEl) {
        items.push({
          mercari_id: mercariId,
          title: titleEl ? titleEl.textContent.trim() : '',
          sale_price: priceEl ? parseInt(priceEl.textContent.replace(/[^0-9]/g, '')) || 0 : 0,
          image_url: imgEl ? imgEl.src : '',
        });
      }
    });
  }

  if (items.length === 0) {
    alert('商品が見つかりませんでした。\n販売済みページで実行してください。');
    return;
  }

  fetch('https://mercari-sales-app.pages.dev/api/import', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ sales: items })
  })
  .then(function(r) { return r.json(); })
  .then(function(data) {
    alert('✅ ' + (data.imported || 0) + '件を取り込みました!\n(重複はスキップ)');
  })
  .catch(function(e) {
    alert('❌ 取込に失敗しました: ' + e.message);
  });
})();

ブックマークレットの更新方法

  1. 「📋 ブックマークレットをコピー(最新版)」をタップ
  2. 📚ブックマークから「📥メルカリ取込」を長押し → 編集
  3. URLを全選択して削除 → コピーしたコードを貼り付け → 完了

使い方: jp.mercari.com/mypage/listings?status=SOLD_OUT を開き、ページが完全に表示されてからブックマークをタップ

🔄 最新の販売分を同期

メルカリAPIへのアクセスを試みます。ログインセッションが必要なため、失敗する場合はブックマークレットをご利用ください。

📄 JSONで直接インポート

JSON形式のデータを貼り付けてインポートできます。配列形式、または { "sales": [...] } 形式に対応。