時間がない人へのまとめ

この記事では、Google Driveの特定フォルダに保存されたCSVを指定したスプレッドシートにシートを分けてインポートし、余計な行・列を削除するサンプルコードを紹介します。

目次

はじめに

この記事では、Google Driveの特定フォルダに保存されたCSVを指定したスプレッドシートにシートを分けてインポートし、余計な行・列を削除するサンプルコードを紹介します。

全体コード

function importCSVFromGoogleDrive() {
  // スプレッドシートの指定
  var ss_id = "スプレッドシートID";
  // DriveのフォルダID指定(取り込みたいCSVを配置しているフォルダIDです)
  var id = "フォルダID";

  // スプレッドシートの取得
  var sh = SpreadsheetApp.openById(ss_id);
  // フォルダの取得
  var target = DriveApp.getFolderById(id);
  // フォルダ内部のファイルを取得
  var files = target.getFiles();
  
  // ファイルの数だけ繰り返す
  while (files.hasNext()) {
    // ファイルを取得
    var file = files.next();
    // ファイルの名前を取得
    var fileName = file.getName();
    
    // csvを解析
    var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
    
    // シートの作成
    var newSheet = sh.insertSheet();
    // シートの名前を、ファイルの拡張子より前と同じに変更
    newSheet.setName(fileName.slice( 0, -4 ));
    // シートにCSVをインポート
    newSheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
    
    // 値が入っている最終行の位置を取得する
    let lastRow = newSheet.getLastRow();
    // 値が入っている最終列の位置を取得する
    let columns = newSheet.getLastColumn();
    // シート上の最大の行数を取得する
    const maxlastRow = newSheet.getMaxRows();
    // シート上の最大の列数を取得する
    const maxcolumns = newSheet.getMaxColumns();

    // 不要な列の削除
    newSheet.deleteColumns(columns,maxcolumns-columns);
    // 不要な行の削除
    newSheet.deleteRows(lastRow,maxlastRow-lastRow);
  }
}