拡張機能の概要
楽天ポイントの履歴をCSV形式で保存するだけのChrome拡張機能
制作の動機
現状の楽天ポイント履歴のサイトの使いにくい点
改善案
- ポイント履歴のサイトをスクレイピングすれば保存できそう
- 拡張機能にすればいつでも呼び出せて使いやすそう
内部処理
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エクスポート機能を公式で実装してほしい