GAS: スプレッドシートにCSVを取り込む

CSVファイルGoogleスプレッドシートに取り込むスクリプト(Google Apps Script)を作成しましたので紹介します。

スプレッドシートに取り込みたいサンプルCSVファイル
スプレッドシートへの取り込み完了後はこんな感じになる

事前準備(フォルダIDの確認)

今回のサンプルでは、Googleドライブ上の所定のフォルダにアップロードされたCSVファイルと、ファイル名を指定して取り込みます。

下図のように、あらかじめフォルダのIDを確認しておきます。

今回の例では、CSVファイルは所定のフォルダに格納されるものとする。フォルダIDはURLから確認できる。

CSVをスプレッドシートに取り込むコード

スクリプトエディタに下記のコードを貼り付けて、importCsv関数を実行すればOKです。
なお、6行目のフォルダIDと7行目のファイル名は読者様のものに変更してください。

function importCsv(){ 
  // 取り込み先のシート
  const sheet = SpreadsheetApp.getActiveSheet();

  // 格納フォルダとCSVファイル
  const folder = DriveApp.getFolderById("1BZ2lloLbFfyMAPay9lXeYniMRdpXF3ue");
  const file = folder.getFilesByName("sample.csv").next();

  // CSVファイルを文字列化
  const tmpCsvString = file.getBlob().getDataAsString();
  const csvString = tmpCsvString.charCodeAt(0) === 0xFEFF ? tmpCsvString.slice(1) : tmpCsvString;
  
  // CSVの文字列を二次元配列にしてシートに貼りつける
  const arrays = Utilities.parseCsv(csvString);
  sheet.clear();
  sheet.getRange(1, 1, arrays.length, arrays[0].length).setValues(arrays);
}

取り込んだデータが文字化けしてしまっている場合、CSVファイルのエンコードがUTF-8ではない可能性があります。

.getDataAsString()の引数に、エンコードを指定してください。(以下の例では”Shift_JIS”を指定しています)

  // CSVファイルを文字列化
  const csvString = file.getBlob().getDataAsString("Shift_JIS");

コメント