Я пытаюсь создать сценарий для копирования нескольких листов из одной (нераскрытой) таблицы в другую (активная электронная таблица).Скопируйте несколько листов из одной таблицы в другую таблицу
Я искал другие решения и использовал некоторые другие предложения, которые я собрал вместе с этим кодом. У меня нет опыта программирования и я начал изучать Javascript, когда моя школа начала использовать приложения Google.
Мне потребовалось около 5 часов, и я думаю, что я почти там, но я не могу заставить его работать.
function copySheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var infoPageSheet = ss.getSheetByName("infoPage");
var sheetID = infoPageSheet.getRange("B11").getValues().toString(); //gets the ID of the spreadsheet that contains the sheets I need to copy from cell B11
var classSelect = infoPageSheet.getRange("B12:B17").getValues().toString().split(","); // gets the names of the sheets I need to copy (one name per cell)
var stuNameList = SpreadsheetApp.openById(sheetID); // opens the target sheet
for (var i = 0; i < classSelect.length; i++) {
var copy = stuNameList.getSheetByName(classSelect[i]);
if (copy) {
Logger.log("copy " + classSelect[i] + " already exists");
} else {
stuNameList.copyTo(ss).setName(classSelect[i]).showSheet();
}
}
}
Я буду вводить идентификатор и имена листов, которые я хочу скопировать в активную электронную таблицу. Я запустил скрипт, и скрипт должен получить листы из исходного файла (нераскрытого) и скопировать их в активную электронную таблицу с тем же именем.
Пожалуйста, не стесняйтесь быть критически моего кода, как вы хотите, любая помощь будет принята с благодарностью ..
UPDATE
Я получил эту работу прямо сейчас
function getVars() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sortSheet = ss.getSheetByName("Sorted Scores");
var infoPageSheet = ss.getSheetByName("infoPage");
var sheetID = infoPageSheet.getRange("B11").getValue().toString();
var classSelect1 = infoPageSheet.getRange("B12:B18").getValues().toString().split(",");
var classSelect = new Array();
for (var i = 0; i < classSelect1.length; i++) {
if (classSelect1[i]) {
classSelect.push(classSelect1[i]);
}
}
var stuNameList = SpreadsheetApp.openById(sheetID);
Logger.log(sheetID)
for (var i = 0; i < classSelect.length; i++) {
var get = (classSelect[i]);
var copy = ss.getSheetByName(classSelect[i]);
if (copy) {
Logger.log("copy " + classSelect[i] + "already exists");
} else {
stuNameList.getSheetByName(get)
.copyTo(ss)
.setName(get);
Logger.log(classSelect)
}
}
}
Благодарим вас за ввод, но ваше решение по-прежнему не решает мою проблему. Листы, которые мне нужно скопировать, находятся в переменной «stuNameList», и мне нужно скопировать их в переменную «ss». Я изменил свой код, ss.getSheetByName (classSelect [я]) .copyTo (stuNameList) .setName (classSelect [я]); Но все равно ничего не происходит! –