Javascript .setValues由于未定义的.length而出现错误

Javascript .setValues由于未定义的.length而出现错误,javascript,google-apps-script,google-sheets,typeerror,Javascript,Google Apps Script,Google Sheets,Typeerror,我正在使用一个连接的Gform来构建零件的重新排序列表。我有4个不同的列表,它们是通过应用程序脚本创建的,由表单提交触发,问题是如果.length未定义,函数无法.setValues。因为并非所有列表都需要一次更新。我需要一个变通方法来完成该功能 获取错误TypeError:无法从未定义中读取属性长度。当这4个列表中的任何一个都不需要考虑的时候, rs.getRange(2,2,dsmSO.length,dsmSO[0].length).setValues(dsmSO); rs.ge

我正在使用一个连接的Gform来构建零件的重新排序列表。我有4个不同的列表,它们是通过应用程序脚本创建的,由表单提交触发,问题是如果.length未定义,函数无法.setValues。因为并非所有列表都需要一次更新。我需要一个变通方法来完成该功能

获取错误TypeError:无法从未定义中读取属性长度。当这4个列表中的任何一个都不需要考虑的时候,

    rs.getRange(2,2,dsmSO.length,dsmSO[0].length).setValues(dsmSO);
  rs.getRange("B2:C").sort(3);
rs.getRange(2,6,dsmReorder.length,dsmReorder[0].length).setValues(dsmReorder);
  rs.getRange("F2:H").sort(7);
rs.getRange(2,10,oSO.length,oSO[0].length).setValues(oSO);
  rs.getRange("J2:J").sort(10);
rs.getRange(2,12,oReorder.length,oReorder[0].length).setValues(oReorder);
  rs.getRange("L2:O").sort(12);
完整的代码如下

    function finalCode(){
      var ss = SpreadsheetApp.getActive();
      var control = ss.getSheetByName("Control");
      var sold = ss.getSheetByName("Sold");
      // Speacial Order Parts Range
      var newPart = control.getRange(2,2,control.getLastRow() -1,9).getValues();
      // Sold Parts Range
      var soldPart = sold.getRange(2,3,sold.getLastRow() - 1,4).getValues();
      // Results Sheet
      var rs = ss.getSheetByName("Results")

      var dsmReorder = [];
      var dsmSO = [];
      var oReorder = [];
      var oSO = [];

      // DsM Sold Loop
      for(var i = 2; i<soldPart.length;i++){
        if(soldPart[i][3] == ''){
          if(soldPart[i][0] != 'Kurt'){
            dsmReorder.push([soldPart[i][0],soldPart[i][1],soldPart[i][2]])}
          else if(soldPart[i][0] == 'Kurt'){
            oReorder.push([soldPart[i][1],soldPart[i][2]])}
          var d = new Date();
          sold.getRange(i + 2,6).setValue(d);
        }
      }

      for(var l = 2; l<newPart.length;l++){
        if(newPart[l][7] == ''){
          if(newPart[l][1] == 'New Item/Special Order'){
            if(newPart[l][0] != 'kurt@metrolockdm.com'){
              dsmSO.push([newPart[l][0],newPart[l][6]])}
            else if(newPart[l][0] == 'kurt@metrolockdm.com'){
              oSO.push([newPart[l][6]])}
            var d = new Date();
            control.getRange(l + 2,9).setValue(d)
          }
        }
      }
      rs.getRange(2,2,dsmSO.length,dsmSO[0].length).setValues(dsmSO);
      rs.getRange("B2:C").sort(3);
rs.getRange(2,6,dsmReorder.length,dsmReorder[0].length).setValues(dsmReorder);
      rs.getRange("F2:H").sort(7);
     rs.getRange(2,10,oSO.length,oSO[0].length).setValues(oSO);
      rs.getRange("J2:J").sort(10);
     rs.getRange(2,12,oReorder.length,oReorder[0].length).setValues(oReorder);
      rs.getRange("L2:O").sort(12);

    }

您可以尝试以下方法:

if(dsmSO) {
  rs.getRange(2,2,dsmSO.length,dsmSO[0].length).setValues(dsmSO);
  ....
}

问题不在于.length未定义。问题是具有该属性的对象未定义。在哪条线上?请提供签名和执行记录。