<スポンサーリンク>

【GAS】3行(N行)ずつのデータを1行にまとめるGAS

この記事は約3分で読めます。
コピーボタン
記事のタイトルとURLをコピー
<スポンサーリンク>

function combineRowsFromFourthSheetOnwards() {
  // まとめ先のシート名
  var combinedSheetName = "結果";
  var combinedSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(combinedSheetName);
  
  // まとめ先のシートが存在しない場合は新規作成
  if (!combinedSheet) {
    combinedSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(combinedSheetName);
  }
  
  // まとめ先のシートにヘッダーを追加
  var headers = ["目次1", "目次1", "目次1", "目次1", "目次1", "目次1", "目次1", "目次1", "目次1", "目次1", "目次1", "目次1", "目次1", "目次1"];
  combinedSheet.appendRow(headers);
  
  // シートの数
  var numSheets = SpreadsheetApp.getActiveSpreadsheet().getNumSheets();
  
  // 4番目以降のシートからデータを取得してまとめる
  for (var i = 3; i < numSheets; i++) {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[i];
    var lastRow = sheet.getLastRow();
    var lastColumn = sheet.getLastColumn();
    var dataToCombine = [];
    
    // 3行ごとのデータを1行にまとめる
    for (var j = 1; j <= lastRow; j += 3) {
      var range = sheet.getRange(j, 1, 3, lastColumn);
      var values = range.getValues();
      var combinedRow = [];
      
      // 取得した3行のデータを1行にまとめる
      values.forEach(function(row) {
        combinedRow = combinedRow.concat(row);
      });
      
      // まとめたデータを配列に追加
      dataToCombine.push(combinedRow);
    }
    
    // まとめたデータをまとめ先のシートに一気に書き込む
    combinedSheet.getRange(combinedSheet.getLastRow() + 1, 1, dataToCombine.length, dataToCombine[0].length).setValues(dataToCombine);
  }
}
コピーボタン
記事のタイトルとURLをコピー
GAS
スポンサーリンク
スポンサーリンク
nujonoaをフォローする

コメント欄

<スポンサーリンク>
タイトルとURLをコピーしました