无法读取属性"长度"来自undefined。 (第39行,文件"代码")

时间:2015-02-20 07:03:07

标签: google-apps-script google-sheets spreadsheet google-spreadsheet-api

我写了一个谷歌应用程序脚本,用于过滤数据并复制到另一张表。但是,昨天我今天早上打开时显示错误“无法读取未定义的属性长度”

onEdt是用户定义的函数。不要与onEdit()

进行比较
    function onEdt( )
{
   var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("data");

      var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Crunch2");
        var data = source.getDataRange().getValues();
        var copydata = new Array();// this is a new array to collect data
        var ldaps =  [ 'ttp' , 'tnh' , 'pamar' ];
        for(n=0;n<data.length;++n)
    {     // iterate in the array, row by row
          for(i=0;i<ldaps.length;++i)
          {
          if ( data[n][2]==ldaps[i])
          { // if condition is true copy the whole row to target
            if(data[n][0]=="aa")
            {
              if(data[n][1]==41709)
              {
                if(data[n][4] != "-")
                {
                  if(data[n][5] != "YES")
                  {
                    if(data[n][5] != "UNCERTAIN")
                    {
                       if(data[n][5] != "NO")
                       {
                         copydata.push(data[n]);// copy the whole row
                       }
                    }
                  }
                }
              }
            }
          } //if
        }//for
        }
        //Paste to another sheet from first cell onwards
          destination.getRange(1,1,copydata.length,copydata[0].length).setValues(copydata);
}

任何人都可以帮我解决上述问题吗?

1 个答案:

答案 0 :(得分:2)

您应该在最后一行添加对copyData的检查:

         if (copydata.length) { 
             destination.getRange(1,1,copydata.length,copydata[0].length).setValues(copydata);
         }