2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Pricing CalculatorのCSV出力文字化け問題を回避する

Posted at

AWS Pricing Calculator
https://calculator.aws/

を使ってるとCSV出力で文字が化けることがある。説明文をたくさん入れるなどしているとどこかでおかしくなる。単にUTF8のBOMの問題ではなく、バックスペースなどの制御コードまで入ってるから日本語以前にファイルが壊れる。発生条件はいまいち分かってないけど、フロントエンドでCSVを作成しているところでおかしくなってると推測。

じゃぁってことで画面上をJSでスクレイピングして、そのままタブ区切りテキストトとして出力する。

回避策のJS

以下がソース。このソースをdeveloper.toolsのconsoleに貼り付けて実行すると、タブ区切りテキストがconsoleに出力されるので、これをまたエクセルにコピペする。

sample.js
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にコピペして実行すると、タブ区切りで出力される。

image.png

それをエクセルにコピペ。

image.png

ソースの解説

やってることは、テーブルタグのtrを行、thもしくはtdをカラムとしてタブ区切り文字列を作ってるだけ。

一番左に空白セルがるはチェックボックスの欄がそのまま引っ張ってきてる。
チェックBOXのセルを取り除くことをしてもいいけど、ソースが分かりにくくなるのでこの例では超シンプルな「テーブルをタブ区切りにするサンプル」として認識してほしい。

理想を言えば、JSのBlobを使ってファイルとして保存できればいいんだろうけど、どうもそのロジックでPricing Calculatorがバグっているっぽいので、あえてそこでは追いかけない。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?