[英]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.