列にある値を6分割して別シートに転記していく
Q&A
Closed
解決したいこと
TemplateというシートB列にある値を格納し、上から6つの値を2列×3行でPage1というシートに,また続きの6つの値をPage2というシートに, Page3に, ... とシートを自動作成しながら転記していくスクリプトを書きました。
chatgptに書いてもらったのですがどうもB列の値の格納がうまくいっていないようで、Page2から格納すべき値が飛んでしまいます。
初歩的な質問で恐縮ですがどうしたらよいでしょうか。
発生している問題・エラー
function transferData2() {
var sheetName = "Template"; // データを取得するシートの名前
var columnNumber = 2; // データを取得する列の番号(B列の場合は2)
var dataRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getDataRange().getValues();
var rowsPerPage = 3; // 1ページあたりの行数
var columnsPerPage = 2; // 1ページあたりの列数
var dataPerPage = rowsPerPage * columnsPerPage;
var totalPages = Math.ceil(dataRange.length / dataPerPage); // データを転記する必要があるページ数
for (var page = 1; page <= totalPages; page++) {
var pageName = "Page" + page;
var pageValues = [];
var startRow = (page - 1) * rowsPerPage;
var endRow = Math.min(startRow + rowsPerPage, dataRange.length);
for (var row = startRow; row < endRow; row++) {
var rowData = [];
for (var column = (page - 1) * columnsPerPage; column < page * columnsPerPage; column++) {
var dataIndex = row * columnsPerPage + column;
if (dataIndex < dataRange.length) {
rowData.push(dataRange[dataIndex][columnNumber - 1]);
} else {
rowData.push("");
}
}
pageValues.push(rowData);
}
var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(pageName);
newSheet.setColumnWidth(1, 450); // A列の幅を318に設定
newSheet.setColumnWidth(2, 318); // B列の幅を318に設定
for (var i = 1; i <= rowsPerPage; i++) {
newSheet.setRowHeight(i, 325); // 行の高さを325に設定
newSheet.getRange(i, 1, 1, columnsPerPage).setVerticalAlignment("top"); // A列とB列を上付きにする
}
newSheet.getRange(1, 1, pageValues.length, pageValues[0].length).setValues(pageValues);
}
}
0