一つの Google spread sheet を複数のシートに分割するには?

function splitSheetIntoRows(sourceSheetName, numRowsPerSheet) {
  var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheetName);
  if (!sourceSheet) {
    throw new Error("指定されたシートが見つかりませんでした。");
  }
  
  var lastRow = sourceSheet.getLastRow();
  var sourceData = sourceSheet.getRange(1, 1, lastRow, sourceSheet.getLastColumn()).getValues();
  
  for (var i = 0; i < lastRow; i += numRowsPerSheet) {
    var numRows = Math.min(numRowsPerSheet, lastRow - i);
  // sheet 名の設定
    var newSheetName = sourceSheetName + "_" + (i + 1) + "-" + (i + numRows);
    var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(newSheetName);
    newSheet.getRange(1, 1, numRows, sourceSheet.getLastColumn()).setValues(sourceData.slice(i, i + numRows));
  }
}

function main() {
  var sourceSheetName = "ALL"; // 分割元のシート名をここに指定
  var numRowsPerSheet = 25; // 分割する行数をここに指定
  splitSheetIntoRows(sourceSheetName, numRowsPerSheet);
}

 

CreateSheetGID 関数を選択して実行

updateSheetName はシート名を先頭の2シート以降をシーケンシャルに設定

function CreateSheetGID() {
  var spreadsheet = SpreadsheetApp.getActive();

  var sheet = SpreadsheetApp.getActive().getSheetByName('GID');
  if(sheet == null) {
    spreadsheet.insertSheet('GID', 0);
  }
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('GID'), true);

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i = 0 ; i < sheets.length ; i++) {
    Logger.log("\t" + sheets[i].getName() + "\t" + sheets[i].getIndex() + "\t" + sheets[i].getSheetId());

    spreadsheet.getRange('A'+ (i + 1).toString()).activate();
    spreadsheet.getCurrentCell().setValue(sheets[i].getName());

    spreadsheet.getRange('B'+ (i + 1).toString()).activate();
    spreadsheet.getCurrentCell().setValue(sheets[i].getSheetId());
  }

  Logger.log("OK");
}

function updateSheetName() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  
  for (var i = 2 ; i < sheets.length ; i++) {
    Logger.log("\t" + sheets[i].getName() + "\t" + sheets[i].getIndex() + "\t" + sheets[i].getSheetId());

    sheets[i].activate().activate().setName("シート"+ (i -1));
  }

}

 

© 2024 Falco Tech Blog Suffusion theme by Sayontan Sinha