javascript - 在 Google Sheets 脚本编辑器上创建嵌套 For-Loop 以将数据自动提取为所需格式
问题描述
我正在尝试提出一个函数,可以将数据从一个工作簿提取到另一个具有单独格式的工作簿。我将工作簿称为“源”和“目标”。因此,在“来源”上,我将数据安排在年度标签中。但是,在“目的地”上,我有指示区域的选项卡。我附上了这两个工作簿的快照。
由于我没有编程基础,因此我尝试编写代码,但效果不佳。以下是我在嵌套 for 循环中的尝试,它首先从第一个区域(“Ampang”)的“2015”选项卡中提取数据,并将其粘贴到“Ampang”选项卡和“2015”中的另一个工作簿中排。我运行了调试功能,它说“var data”是未定义的。
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
}
}
}
}
但是,var rangeSource 和值当前未定义。我仍在努力寻找错误的根源。
解决方案
您已将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
看看有没有帮助。
推荐阅读
- keypress - Node-Red 向终端发送字符 - 例如发送空间以暂停/播放 OMXplayer
- spring-webflux - 在 Mono.Zip 和/或顺序 flatMap 上保存事务
- python - 从英国城市中提取历史每日当地温度
- symfony - Vich上传,多上传图片不起作用
- api - 正确上传不正确的 CSV 文件的 HTTP REST API 状态代码
- 3d - 我在 Next.js 中遇到此错误,同时实现 Pannellum-react 以制作 3D 图像“无法从 node_modules 中导入全局 CSS。”
- hive - 无法将 AWS Athena 与 JSON + Snappy 一起使用
- r - 使用 tmap 保存有关从点到点移动的路径的信息
- python - 如何在使用 Tkinter 加载应用程序时创建加载屏幕
- react-native - react-native:是否有可能为网站提供 react-native 侧边栏?