データ入力、閲覧では役に立つセルの結合ですが、プログラムで処理する場合は邪魔でしかありません。
- 普通にセル結合を解除すると左上のセル以外は空文字として結合が解除される
- プログラムで行単位処理する場合も、左上以外のセルは値は空文字
な仕様になっているので、プログラムで処理する場合には一旦セル解除したシートを作成し、そのシートに対して処理した方が良さそうです。
Before
After
スクリプト
function createUnmergedSheet(sheetName) {
// オリジナルのシート名_unmerged のファイルを作成
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName(sheetName);
var unmergedSheet = sourceSheet.copyTo(ss);
var name = sourceSheet.getName() + "_unmerged";
unmergedSheet.setName(name);
// 作成したシート上の全セル結合を解除
var ranges = unmergedSheet.getDataRange().getMergedRanges();
for (var i = 0; i < ranges.length; i++) {
var targetRange = ranges[i];
var value = targetRange.getDisplayValue();
targetRange.breakApart();
targetRange.setValue(value);
}
}