在 Google 表格脚本编辑器上创建嵌套的 for 循环,以将数据自动提取为所需的格式



我正在尝试提出一个函数,可以将数据从一个工作簿提取到另一个具有单独格式的工作簿。我将工作簿称为"源"和"目标"。因此,在"来源"上,我将数据排列在年度选项卡中。但是,在"目的地"上,我有指示区域的选项卡。我附上了两个工作簿的快照。

由于我没有编程基础知识,我试图想出一个代码,但它并没有完全起作用。以下是我对嵌套 for 循环的尝试,它首先从第一个区域("Ampang"(的"2015"选项卡中提取数据,然后将其粘贴到"Ampang"选项卡和"2015"行中的另一个工作簿中。我运行了调试函数,它说"var 数据"未定义。

function D() {
var ss = SpreadsheetApp.getActiveSpreadsheet();//open destination worksheet
var sss = ss.getSheets(); //get all destination sheets

//var sheetname = ss.getSheetName(); //get sheet names
var sheet1 = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1jJ8QysQTmS5tG4wvNCxqdbWvAbdbmJm5uatdgIHe6tw/edit#gid=793399042"); //open where data is located
var sheet = sheet1.getSheets(); //get all the sheets required

for (j = 0; j<sss.length; j++) {
for (i = 0; i <sheet.length; i++) {
switch(sheet[i].getSheetName()) {
case "Main Menu" :
break;
default:
var data = sheet.getSheets()[i].getRange(i+1, i+2, 1, 2); //get the data for Specific Region and then Changing the Year
var destination = sss[j].getRange(j,j+1,1,2); //pasting the data to the specific year at the Specific Region Tab/
data.copyTo(destination); 
}
}

} }

[更新 1]所以,我意识到当数据在单独的工作簿中时 copyTo(( 函数不起作用,所以我在下面想出了一个新代码:

function D() {
// define the source sheets
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1jJ8QysQTmS5tG4wvNCxqdbWvAbdbmJm5uatdgIHe6tw/edit#gid=793399042");
// get all source sheets
var source = ss.getSheets();
// define the target sheets
var ts = SpreadsheetApp.getActiveSpreadsheet();
// get all target sheets
var target = ts.getSheets();
// set nested for-loop
for (j = 0; j < target.length; j++) { 
for (i = 0; i < source.length; i++) {
if (source[i].getSheetName() !== "Main Menu") {
var rangeSource = source[i].getRange(i+1,i+1,1,2); // get the source range
var values = rangeSource[i].getValues(); // get the values from the set range
} 
if (target[j].getSheetName() !== "Main Menu") {
var rangeTarget = target[j].getRange(j+1,j+1,1,2); //get the target range
rangeTarget.setValues(values[i]); // paste the values to the target range
}
}
}
}

但是,变量范围源和值当前未定义。我仍在尝试查找错误的来源。

源工作表快照

目标工作表快照

您已将sheet定义为所有工作表

var sheet = sheet1.getSheets(); //get all the sheets required

所以data需要

var data = sheet[i].getRange(i+1, i+2, 1, 2); //get the data for Specific Region and then Changing the Year

看到是有帮助的。

最新更新