#きっかけ
GoogleスプレッドシートでIMPORTDATA関数を使うと、指定した URL のデータをCSV形式でインポートできて大変便利なのですが、残念なのは日本語のCSVファイルを読み込む際に、文字コードがUTF-8以外だど文字化けしてしまうことです。
日本国内の公開データCSVファイルの多くは、Excelでの編集を想定しているためか、Shift-JIS形式の場合が多く、Googleスプレッドシート上でインポートして利用するには、使い勝手が良くありません。テキストエディタなどで、文字コード変換をするのも面倒です。
そこで、手間を省くため、文字コードを指定してCSVファイルを読み込めるようにしたGAS関数を作ってみました。
#文字コードを指定して、CSVデータを取得する関数
Google Spreadsheetのスクリプトエディタから、下記のGAS関数を追加して利用します。
/**
* importCSV
*
* 文字コードを指定して、CSVデータを取得する関数
* IMPORTDATA()関数でCSVをロードすると、UTF-8以外は文字化けするための対策
*
* @URL {String} CSVデータの取得先URL
* @mojicode 文字コード {number} [0|1|2] - 0:UTF-8, 1:Shift_JIS, 2:EUC-JP
*
* @return {Object} CSVデータ
*/
function importCSV(URL, mojicode) {
var code = "UTF-8";
if (!URL) {
return;
}
// 文字コード
if (mojicode === 0) {
code = "UTF-8";
}else if (mojicode === 1) {
code = "Shift_JIS";
}else if (mojicode === 2) {
code = "EUC-JP";
}else{
code = "UTF-8";
}
// CSVファイル取得
response = UrlFetchApp.fetch(URL);
var csv = response.getContentText(code);
// CSVデータをパースする
var csvdata = Utilities.parseCsv(csv);
return csvdata
}
#動作確認
動作確認として、投信総合検索ライブラリー と e-Stat 政府統計ポータルサイトから、CSVファイルのインポートを試してみます。
##例1) 上場インデックスファンドTOPIX
※ ページ内にある「基準価額・純資産総額・分配金のCSV データダウンロード」からダウンロードできます。
##例2) 国勢調査 / 時系列データ / CSV形式による主要時系列データ
※ ページ内にある「表示・ダウンロード」からダウンロードできます。
IMPORTDATA関数だと日本語が文字化けしてしまいますが、importCSV関数で文字コードを指定して読み込むと、文字化けを回避できるようになりました。