0

我正在尝试使用脚本在 Google Docs 中将数据从一张表复制到另一张表。两张表都是同一个电子表格文档的一部分。如果 A 列中的值为“名称”,我想将信息从第一张表复制到第二张表。我对 JavaScript 有基本的了解,到目前为止,我已经设法提出了以下内容。

function copytoo(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);// selects the first sheet in     your spreadsheet
  var data = sh.getDataRange().getValues();// data is a 2D array, index 0 = col A
  var target = new Array();// this is a new array to collect data
  for(n=0;n<data.length;++n){ // iterate in the array, row by row
    if (data[n][0]=="Name"){ ;// if condition is true copy the whole row to target
    taget.push(data[n]);// copy the whole row
    }//if
    }//for
  var sh2=SpreadsheetApp.setActiveSheet(ss.getSheets()[1]); //second sheet of your spreadsheet
  sh2.getRange(1,1,target.length,target[0].length).setValues();// paste the selected     values in the 2cond sheet in one batch write
}//function 

当我运行上述内容时 - 我得到以下信息:

TypeError:无法从未定义中读取属性“长度”。(第 13 行,文件“代码”)

4

1 回答 1

1

问题的可能根源:

taget.push(data[n]);// copy the whole row
^^^^^

你可能的意思是target。实际上,您会遇到以下问题:

target[0].length

由于您从未将任何内容推送到target,因此没有target[0]定义,因此它当然没有length属性。

即使你修复taget了,你也有这个错误的风险,除非你保证有一个target[0]具有length属性的,或者跳过操作 when target.length === 0

于 2013-08-28T03:28:37.423 回答