GASでCSVデータを操作する方法 〜 読み込み・出力をマスターしよう 〜

GASでCSVファイルを扱いたいんですが、CSVの読み込み出力方法がわからなくて…
猫男
猫男
catman
catman
それならcatmanに任せな。いざ、CSV操作の世界へ!

GASでCSVデータを読み込む方法

まずは、GASを使ってCSVファイルをGoogleドライブからインポートするところから始めよう。

CSVをインポート


function importCSVFromLocal() {
  var file = DriveApp.getFilesByName('csvfile.csv').next();
  var csvData = Utilities.parseCsv(file.getBlob().getDataAsString(), ',');
  Logger.log(csvData);
}

このスクリプトでは、Googleドライブからcsvfile.csvを探し、parseCsv配列として読み込むぞ。

getBlobはファイルの内容を取得するのに使う。

Googleドライブに「csvfile.csv」で保存しておこう

文字化け対策

文字化けが発生する場合は、以下のUTF-8を指定してみるといいさ。


file.getBlob().getDataAsString('UTF-8');
やっとCSVのインポートができた…けど、今度は出力も試してみたい!
猫男
猫男
catman
catman
よし、次はCSV形式でのデータ出力について見てみよう。

GASでCSVデータを出力する方法

GASで配列をCSV形式に変換し、ファイルとしてダウンロードできるようにするんだ。


function exportToCSV() {
  var data = [
    ['名前', '年齢', '職業'],
    ['山田', '30', 'エンジニア'],
    ['佐藤', '28', 'デザイナー']
  ];
  
  var csvString = data.map(row => row.join(',')).join('\n');
  var blob = Utilities.newBlob(csvString, 'text/csv', 'output.csv');
  DriveApp.createFile(blob);
}

このスクリプトでは、配列データをmapを使ってCSV形式の文字列に変換する。

 

結果はnewBlobを使ってファイルとしてGoogleドライブに保存できる。

ドライブに保存されたCSVファイル「output.csv」はこんな感じになるはずだ。

gas csv

 

練習問題:GASでCSVを操作してみよう!

以下の試練に挑戦してみよう。

  1. GASを使って、任意のCSVファイルを読み込み、ログに出力してみる。
  2. 読み込んだデータを加工して再度CSVとして出力する。

 

 

解答・解説

以下のスクリプトを参考に、実際に試してみると良いさ。


function practiceCSVOperation() {
  // CSVを読み込む
  var file = DriveApp.getFilesByName('yourfile.csv').next();
  var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
  
  // データを加工、この場合はそのまま出力
  var modifiedData = csvData; // 加工が必要ならここで行う
  var csvString = modifiedData.map(row => row.join(',')).join('\n');
  
  // 加工したデータをCSV出力
  var blob = Utilities.newBlob(csvString, 'text/csv', 'modified_output.csv');
  DriveApp.createFile(blob);
  
  Logger.log('CSV操作完了');
}

ファイル読み込みと同時に、parseCsvでデータを配列形式で取得している。

その配列を元に、新しいCSV形式の文字列を生成し、newBlobでファイルとして保存している。

GASでのCSV操作がこんなに簡単だなんて!他のデータもどんどん操作してみたくなりました!
猫男
猫男
catman
catman
GASを使いこなして、自由にデータを操る楽しさを満喫しよう!