[英]Copy several sheets from one spreadsheet to another spreadsheet
我正在尝试创建一个脚本,以将多个工作表从一个(未打开的)电子表格复制到另一个(活动的电子表格)。
我搜索了其他解决方案,并使用了将这些代码组合在一起的一些其他建议。 我没有编程经验,只是在我的学校开始使用Google应用程序时才开始学习Javascript。
我花了大约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();
}
}
}
我将输入ID和要复制到活动电子表格中的工作表的名称。 我将运行该脚本,该脚本应从源文件中获取工作表(未打开)并将其复制到具有相同名称的活动电子表格中。
请随意批评我的代码,任何帮助将不胜感激。
更新
我现在已经开始工作了
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)
}
}
}
您的“ sheetID”似乎是一个包含多个工作表ID的大字符串。 我的意思是说
Logger.log(sheetID) //logs "sampleid,sampleid2,sampleid3"
我认为openById()
stuNameList
接受(返回错误值错误)。 尝试在您的else
上使用.openById(sheetID[i])
。
copyTo方法仅适用于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 {
ss.getSheetByName(classSelect[i])
.copyTo(stuNameList)
.setName(classSelect[i]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.