我正在使用连接的Gform构建零件的重新排序列表。我有4个通过应用程序脚本创建并由表单提交触发的不同列表,问题是如果.setValues
为.length
,该函数将无法undefined
。由于并非所有列表都需要立即更新。我需要一种变通办法以允许该功能完成。
正在获取错误“ TypeError:无法从未定义中读取属性” length”。当这四个列表中的任何一个都没有要考虑的情况时。
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);
}
答案 0 :(得分:1)
您可以尝试以下操作:
if(dsmSO) {
rs.getRange(2,2,dsmSO.length,dsmSO[0].length).setValues(dsmSO);
....
}