LoginSignup
0
1

楽天ポイントの履歴をCSV形式でエクスポートする拡張機能作った

Posted at

拡張機能の概要

楽天ポイントの履歴をCSV形式で保存するだけのChrome拡張機能

アセット 5.png

制作の動機

現状の楽天ポイント履歴のサイトの使いにくい点

  • 楽天ポイントはCSV形式のエクスポートを提供していない

  • 履歴は最大で1年前のものしか参照できない
    スクリーンショット 2024-01-23 16.53.10.png

  • 楽天カードの明細では"楽天キャッシュ チャージ"としてまとめて表示されてしまう
    スクリーンショット 2024-01-23 16.52.09.png

改善案

  • ポイント履歴のサイトをスクレイピングすれば保存できそう
  • 拡張機能にすればいつでも呼び出せて使いやすそう

内部処理

history-tableを取得し適当に文字列を整える

var tableBodyContent = document.querySelector('.history-table tbody')
for (var i = 0; i < tableBodyContent.children.length; i++) {
	var row = tableBodyContent.children[i]
	try {
		let date = row.querySelector(".date").innerText.replaceAll("\n", "/").replaceAll(",", "")
		let service = row.querySelector(".service").innerText.trim().replaceAll("\n", " ").replaceAll(",", "")
		let title = row.querySelector(".detail").innerText.trim().split("\n")[0].replaceAll(",", "")
		let action = row.querySelector(".action").innerText.trim().replaceAll("\n", ".").replaceAll(",", "")
		let point = row.querySelector(".point").innerText.trim().replaceAll("\n", "").replaceAll(",", "")
		let note = row.querySelector(".note").innerText.trim().replaceAll("\n", "\\n").replaceAll(",", "").replaceAll("\r", "")

		csv += date + "," + service + "," + title + "," + action + "," + point + "," + note + "\n"
	} catch (e) {
	}
}

スクレイピング&保存が終了した3秒後に、次の履歴ページのタブを開き、今のタブを閉じる

if (nextButton.innerText == "NEXT") {
	var nextUrl = nextButton.querySelector("a").href.replace("#point_history", "") + "&export=1#point_history"
	setTimeout(() => {
		window.open(nextUrl)
		window.close()
	}, 3000);
} else {
	window.alert("全履歴の保存が完了しました")
	window.close()
}

まとめ

  • 複数ページにわたるスクレイピングは面倒
  • 楽天ポイント履歴のCSVエクスポート機能を公式で実装してほしい
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1