GoogleAppsScript
CSV
GoogleDrive
GoogleSpreadSheet

Google Apps ScriptでCSVファイルをGoogleスプレッドシートにインポートする

はじめに

CSVの形式でデータをエクスポートすることが多いので、そのデータを整理しやすくするためにスプレッドシートにインポートしてしまおう!ということで調べてみました。

同じような記事はいくつかあるのですが、自分なりにまとめようと思います。

Googleアカウント

タイトル通りGoogleAppsScriptを使うのでGoogleのアカウントが必要です。
ない場合はあらかじめ作っておきましょう。

また、今回はGoogleDrive内にあるCSVファイルをスプレッドシートにインポートするので
GoogleDriveとGoogleスプレッドシートを使えるようにしておきましょう。

事前準備

まずは、書き込む先のスプレッドシートを用意します。
新しいスプレッドシートを作成し任意のタイトルをつけてGoogleDriveに保存します。

このときGoogleDrive内にフォルダも作ってしまいましょう。

次に、スプレッドーシートに書き込むCSVファイルをエクセルで適当に作りましょう。
この作ったCSVファイルはGoogleDrive内に作成したフォルダの中にアップロードします。

コード

ここまでの準備が完了したら、コードを書いていきます。

スプレッドシートを開き、ツールバー内にあるツールからスクリプトエディタを開きます。
するとコードを書き込めるエディタが出てきます。
そこに以下のようなコードを書き込みます。

csv_import_1.gs
//書き込む対象のSpread Sheetを定義
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();

function import() {

  // 対象のCSVファイルが置かれているフォルダ名、ファイル名を定義
  var folderName = "テスト";
  var fileName = "test.csv";
  var folders = DriveApp.getFoldersByName(folderName);

  //フォルダとファイルの検索
  while (folders.hasNext()) {
    var folder = folders.next();
    if (folder.getName() == folderName) {
      var files = DriveApp.getFilesByName(fileName);
      while (files.hasNext()) {
        var file = files.next();
        if (file.getName() == fileName) {

          //設定しないでShift_JISのままだと文字化けする
          var data = file.getBlob().getDataAsString("Shift_JIS"); 

          var csv = Utilities.parseCsv(data);

          //セルA1からCSVの内容を書き込んでいく
          sh.getRange(1,1,csv.length,csv[0].length).setValues(csv);
          return;
        }
      }
    }
  }
}

GoogleDrive内にあるCSVを探して対象のスプレッドシートに書き込むだけなのですが
対象のスプレッドシートからエディタを起動したので、定義が簡単になっています。

コメントに書いていないコードの詳細は各自調べてもらうといくらでも出てくると思います。

実行

エディタの上のほうにあるデバッグボタンでデバッグすることができその左のボタンで実行することができます。
実行ボタンを押したあとスプレッドシートを見に行くと、CSVファイルの内容がそのまま書き込まれていると思います。

最後に

今回はGoogleDrive内にあるCSVファイルをGoogleDrive内のスプレッドシートに書き込んでみましたが、ローカルの中にあるCSVファイルをスプレッドシートに書き込むこともできるみたいです。

以上でこの記事を終わりにしたいと思います。