まだまだ現役ですね、SJIS。
巷にあるCSVファイルをGoogle Spreadsheetに取り込むときにIMPORTDATA関数が便利です。関数ひとつで複数セルにわたってデータを展開してくれる、便利な関数です。こういう複数セルに結果を返す関数によって作りこむ仕事が減った気がします。まあ標準機能は充実させるべきです。
ところが、この関数はSJISに対応しておらず、取り込むと文字化けの特徴である豆腐文字「□」に翻訳されてしまいます。セルに返す前にエンコードしなければならないようです。
そこでGASの出番。データを取り込み、エンコードした後で二次元配列を生成すればOKです。改行コードはCR,LF,CRLFの可能性があるので、全部引っかけます。正規表現見るとわかりますが、連続する改行コードをまとめているので、結果的に空行は無視されます。
function IMPORTSJISCSV(_url) {
return UrlFetchApp.fetch(_url).getContentText("shift_jis").split(/[\n\r]+/).map(function (_line) {
return _line.split(',');
});
}
今回は総務省の休日データを使いました。まず取得前の豆腐状態。。
先程の関数に置き替えました。日付型が文字型に変わっている部分などの微調整は各自で。