Я немного погуглил / исследовал, и приведенный ниже код ближе всего к тому, что я хотел сделать sh.
У меня есть электронная таблица с данными, и код проверяет столбец A исходного листа, создает новые листы с именем в этом столбце, а затем переносит все строки. данные, соответствующие этому имени новому листу.
Этот код прекрасно работает, я буду признателен за помощь в его модификации:
- Вместо того, чтобы говорить "Лист уже существует" он должен просто перезаписать лист с похожим именем.
При копировании совпадающих значений, он должен включать первую строку ( A1 , строку заголовка)
function backUP() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var templateSheet = ss.getActiveSheet();
var sheet1 = ss.getSheetByName("Source")
var getNames = [...new Set(sheet1.getRange("A2:A").getValues().filter(String).toString().split(","))];
for (var i = 0; i < getNames.length; i++) {
var copy = ss.getSheetByName(getNames[i]);
if (copy) {
Logger.log("Sheet already exists");
} else {
var rowIndexes = sheet1.getRange("A:A").getValues()
.map((value, index) => [value[0], (index + 1)])
.filter(value => value[0] === getNames[i]);
var namedSheet = ss.insertSheet(getNames[i]);
rowIndexes.map(index => {
var rowValues = sheet1.getRange(index[1], 1, 1, sheet1.getLastColumn()).getValues();
namedSheet.appendRow(rowValues[0]);
});
ss.setActiveSheet(ss.getSheetByName(getNames[i]));
ss.moveActiveSheet(ss.getNumSheets());
}
}
}