AWS Pricing Calculator
https://calculator.aws/
を使ってるとCSV出力で文字が化けることがある。説明文をたくさん入れるなどしているとどこかでおかしくなる。単にUTF8のBOMの問題ではなく、バックスペースなどの制御コードまで入ってるから日本語以前にファイルが壊れる。発生条件はいまいち分かってないけど、フロントエンドでCSVを作成しているところでおかしくなってると推測。
じゃぁってことで画面上をJSでスクレイピングして、そのままタブ区切りテキストトとして出力する。
回避策のJS
以下がソース。このソースをdeveloper.toolsのconsoleに貼り付けて実行すると、タブ区切りテキストがconsoleに出力されるので、これをまたエクセルにコピペする。
let lines = [];
$$('[role=table] tr').forEach((row)=>{
let cols = [];
row.querySelectorAll('th,td').forEach((td)=>{
cols.push(td.innerText);
})
lines.push(cols.join("\t"));
})
console.log(lines.join("\n"));
上記のソースをconsoleにコピペして実行すると、タブ区切りで出力される。
それをエクセルにコピペ。
ソースの解説
やってることは、テーブルタグのtrを行、thもしくはtdをカラムとしてタブ区切り文字列を作ってるだけ。
一番左に空白セルがるはチェックボックスの欄がそのまま引っ張ってきてる。
チェックBOXのセルを取り除くことをしてもいいけど、ソースが分かりにくくなるのでこの例では超シンプルな「テーブルをタブ区切りにするサンプル」として認識してほしい。
理想を言えば、JSのBlobを使ってファイルとして保存できればいいんだろうけど、どうもそのロジックでPricing Calculatorがバグっているっぽいので、あえてそこでは追いかけない。