【すぐ使える】GASでcsv→スプシ→csvをするコード例
csvをスプシに読み込みたい!
スプシをcsvに変換したい!
今回は、そんな時に使えるコードを紹介していきます。
csvを変換するときに陥りがちな注意点についても解説していきますので、最後まで見逃さないで下さい!
この記事で、csvをスプレッドシートに簡単に読み込むことができるようになるので、使いまわしてみてください!
目次(クリックで読みたい部分にジャンプできます)
【注意】csvをスプレッドシートに読み込む前に
csvをスプレッドシートに読み込もう!!と言いたいところですが、
まず、スプレッドシートに読み込む前に確認して欲しいことがあります。
それは、文字コードです。
csvには、いくつかの文字コードがあり、それによってコードが少し変わってきます。
まずは、あなたが読み取りたいcsvの文字コードを確かめてみましょう。
ここでは、文字コードを調べる方法は解説しませんので、文字コードを調べてみてください。
csvをスプレッドシートにするコード
まずはcsvをスプレッドシートに変換するコードを書いていきましょう。
準備するもの
・csvの内容を出力するシート名
・csvが格納されているフォルダのID
今回は、csvは1つのみを想定しています!フォルダに格納するcsvは1ファイルのみにしてください!
csvをスプレッドシートに変換するコード
function CSVtoSS() {
const sheetname = "シートの名前"
const driveID = ""//csvが格納されているフォルダのID
const folder = DriveApp.getFolderById(dirveID);//csvを格納したフォルダのID
const files = folder.getFiles();
if(files.hasNext()){
console.log("csv作成開始")
const file = files.next();
const fileId = file.getId();
let values;
const blob = DriveApp.getFileById(fileId).getBlob();
const csv = blob.getDataAsString('shift-jis');//ここに文字コードを指定
values = Utilities.parseCsv(csv);
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname);
sheet.clear();//シートをリセット
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
console.log(values)
}else{
console.log("フォルダにファイルがありません")
return false
}
}
まずは、このコードをコピペして、csvをスプレッドシートに取り込んでみてください。
もしかしたら、文字化けが発生する場合があります。
そしたらここから説明する方法にてコードを修正してみてください。
文字化けした時は
対処法①
文字化けした時には、まず以下の行を編集してみてください。
shift-jisの部分をMS932に当てはめます。
const csv = blob.getDataAsString('MS932');//ここに文字コードを指定
これで実行してみてください。
対処法②
次にこれでも解決しない場合の中に、文字コードが
utf-8(BOM付き)である場合があります。
この場合は、少しコードを変えなければなりません。以下の記事でコードを載せていますので参考にしてみてください。
スプレッドシートからcsvを発行するには
ここまで、csvをスプレッドシートに読み込む方法を解説していきました。
次は、スプレッドシートをcsvにする方法を解説します。
準備するもの
・csvに変換したい内容があるスプレッドシート
・csvのファイル名
・csvを出力するGドライブのフォルダID
function createCSV(sheetname,filename) {
const sheetname = "シートの名前"
filename = "csvファイルの名前"
const driveID = ""//csvを出力するフォルダのID
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname);
//データ範囲を二次元配列で取得
var values = sheet.getDataRange().getValues();
//二次元配列をカンマ区切りの文字列に変換
var csv = values.join('\n');
//Blobオブジェクトの作成
var blob = Utilities.newBlob(csv, MimeType.CSV, filename + '.csv');
//CSVファイルの保存先フォルダを指定
var id = dirveID; //フォルダID
var folder = DriveApp.getFolderById(id);
//CSVファイルを作成
folder.createFile(blob);
}
これで、スプレッドシートをcsvにして発行することができます。
先ほどのコードと組み合わせて、csvの内容をGASで編集して、それをcsvに再発行するという一連の流れができそうですね!
まとめ
以上で、csv→スプレッドシート→csvの一連の流れをGASで行うコードを解説しました。
csvを使って、インポートするサードパーティーのサービスは多くあるので、それらの自動化に役立てることができるかもしれませんね。
では、良い自動化ライフを!!