Javascript 在Google Sheets脚本编辑器上创建嵌套For循环以自动将数据提取到所需格式

Javascript 在Google Sheets脚本编辑器上创建嵌套For循环以自动将数据提取到所需格式,javascript,for-loop,google-sheets,Javascript,For Loop,Google Sheets,我试图想出一个函数,可以将数据从一个工作簿提取到另一个具有单独格式的工作簿。我将把工作手册称为“源”和“目标”。因此,在“来源”上,我将数据安排在年度选项卡中。然而,在“目的地”上,我有指示区域的选项卡。我附上了两本工作簿的快照 因为我在编程方面没有基础知识,所以我试着想出一个代码,但效果不太好。下面是我尝试的嵌套for循环,它首先从第一个区域(“Ampang”)的“2015”选项卡提取数据,并将其粘贴到“Ampang”选项卡和“2015”行的另一个工作簿中。我运行了调试函数,它说“var数据”

我试图想出一个函数,可以将数据从一个工作簿提取到另一个具有单独格式的工作簿。我将把工作手册称为“源”和“目标”。因此,在“来源”上,我将数据安排在年度选项卡中。然而,在“目的地”上,我有指示区域的选项卡。我附上了两本工作簿的快照

因为我在编程方面没有基础知识,所以我试着想出一个代码,但效果不太好。下面是我尝试的嵌套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); 

    }
  }
函数D(){
var ss=SpreadsheetApp.getActiveSpreadsheet();//打开目标工作表
var sss=ss.getSheets();//获取所有目标工作表
//var sheetname=ss.getSheetName();//获取工作表名称
var sheet1=SpreadsheetApp.openByUrl(“https://docs.google.com/spreadsheets/d/1jJ8QysQTmS5tG4wvNCxqdbWvAbdbmJm5uatdgIHe6tw/edit#gid=793399042“”;//打开数据所在的位置
var sheet=sheet1.getSheets();//获取所需的所有工作表

对于(j=0;j您已将
sheet
定义为所有工作表

  var sheet = sheet1.getSheets(); //get all the sheets required
因此,
数据
需要

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

看,这很有帮助。

我改变了这一点,这行现在可以用了,但我开始意识到copyTo()仅当数据在同一工作表中时才起作用。因此,我更改了代码,但我在var rangeSource和值方面遇到问题,因为它现在未定义。我不明白为什么for循环在那里不起作用。请检查对我原始帖子的编辑以获取更新的代码谢谢youTry
var values=rangeSource.getValues();
因此,我运行了调试函数,可以看到需要提取的值。但是,我遇到了一个错误,错误是“无法将数组转换为数字[]”,var values是一个数组[“715687500”]-我想提取的两个值,但是var rangeTarget是一个对象。我使用了错误的函数吗?啊,那是因为它应该是
rangeTarget.setValues(values)
而不是
rangeTarget.setValues(values[i])
  var data = sheet[i].getRange(i+1, i+2, 1, 2); //get the data for Specific Region and then Changing the Year