Скрипт переноса данных из одной таблицы в другую
Всем привет, хотел написать скрипт для переноса всех листов одной таблицы в другую с помощью скрипта, все получилось кроме одного НО, мне нужны исходные названия листов или назвать листы по новому строчкой кода, но я не могу написать ее коректно, из таблице надо перенести 20 листов, помогите пожалуйста. Вот сам код.
function importSheets() {
var url = "ссылка_на_документ";
var origin = SpreadsheetApp.openByUrl(url);
var result = SpreadsheetApp.getActiveSpreadsheet();
var sheets = origin.getSheets();
for (var sheet in sheets){
sheets[sheet].copyTo(result)
};
}
Ответы (2 шт):
Автор решения: contributorpw
→ Ссылка
Просто проверьте, если такого листа нет в приемнике, то добавьте имя к вставляемому листу, если есть, то пропустите или сделайте что-то иное.
for (var sheet in sheets) {
const ns = sheets[sheet].copyTo(result);
const name = sheets[sheet].getName();
if (!result.getSheetByName(name))
ns.setName(name);
else
console.warn('Не могу переименовать, такой лист уже есть.')
};
Другой вариант, когда нужно скопировать только то, чего нет
for (var sheet in sheets) {
const name = sheets[sheet].getName();
if (!result.getSheetByName(name)) {
const ns = sheets[sheet].copyTo(result);
ns.setName(name);
} else
console.warn('Не могу скопировать, такой лист уже есть.')
};
Автор решения: Михаил Носаев
→ Ссылка
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu(`▶️ МЕНЮ`)
.addItem("✅ Копировать листы", "importSheets")
.addToUi();
}
function importSheets() {
const ui = SpreadsheetApp.getUi();
const copySheetId = ui
.prompt("Введите ID книги из которой копируем", ui.ButtonSet.OK)
.getResponseText();
if (copySheetId) {
const sheets = SpreadsheetApp.openById(copySheetId).getSheets();
const result = SpreadsheetApp.getActiveSpreadsheet();
for (let sheet in sheets) {
let name = sheets[sheet].getName();
if (!result.getSheetByName(name))
sheets[sheet].copyTo(result).setName(name);
else console.warn("Не могу переименовать, такой лист уже есть.");
}
} else ui.alert(`ID не введён!!!`);
}