12
8

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 3 years have passed since last update.

Google Apps ScriptAdvent Calendar 2020

Day 5

GoogleスプレッドシートでIMPORTDATA関数が文字化けするので、文字コードを指定してCSVファイルを読み込める関数を作ってみました

Last updated at Posted at 2020-12-04

#きっかけ

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 データダウンロード」からダウンロードできます。

2020.12.04-20_55_01-docs.google.com.png

##例2) 国勢調査 / 時系列データ / CSV形式による主要時系列データ
※ ページ内にある「表示・ダウンロード」からダウンロードできます。

2020.12.06-11_10_56-docs.google.com.png

IMPORTDATA関数だと日本語が文字化けしてしまいますが、importCSV関数で文字コードを指定して読み込むと、文字化けを回避できるようになりました。

12
8
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
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?