可以使用setValues()更新的最大单元数?

时间:2015-03-17 17:07:46

标签: google-apps-script google-sheets

在我的脚本中,我尝试使用setValues()函数在单次迭代中更新大量单元格,但是我得到了"无法将数组转换为Object [] []"错误。当我减小数组的大小时,单元格更新没有问题。我无法找到有关setValues()函数限制的任何信息,因此数组的大小确实是个问题吗?

我真的不想将我的阵列分开,所以使用完整阵列无论如何都会出现这个错误吗?



function counter(parts, milestones, WIPSheet, MSSheet, magnets) {
    
  var MSSS = SpreadsheetApp.openById(''); 
  var WIP = SpreadsheetApp.openById('');
  
  var MSSOI = MSSS.getSheetByName(MSSheet); 
  var WIPSOI = WIP.getSheetByName(WIPSheet);
  
  var location = 0;
  
  var ms = '';
  
  var WIPparts = [];
  
  for(var i = 0; i < magnets.length; i++){
    
    if(magnets[i][3] == 0){
     
    ms = magnets[i][1]  
    
    for(var j = 1; j < milestones.length +1; j++){
          
      if(ms == milestones[j-1][0] ){
        for(var l = 0; l < j; l++){
          for(var k = 0; k< parts.length; k++){
        
        parts[k][2] += milestones[l][k+1]; } }}
      
    }
      
     for( j = 0; j < parts.length; j++){
     
     WIPparts[parts[j][1]-3] = [];
     WIPparts[parts[j][1]-3][0] = parts[j][2];
     
    } 
     
 
     WIPSOI.getRange(3,magnets[i][2],WIPparts.length,1).setValues(WIPparts);
 
     for( var k = 0; k<parts.length; k++){
     
      parts[k][2] = 0;
      
    }  
      
    }
   
  }
  
}
&#13;
&#13;
&#13;

数组本身是二维的,实际上目前包含175个数字,例如[[1],[2],[3],...,[175]]

1 个答案:

答案 0 :(得分:0)

您的阵列可能有问题,我一次更新数千个单元而没有打嗝,也许某处有一个空数组,更新

WIPSOI.getRange(3,magnets[i][2],WIPparts.length,1).setValues(WIPparts);

for( lin in WIPparts )
  for( col in WIPparts[ lin ] )
    if( !WIPparts[ lin ][ col ] )
      WIPparts[ lin ][ col ] = "";


WIPSOI.getRange(3,magnets[i][2],WIPparts.length,WIPparts[0].length).setValues(WIPparts);

第一部分将消除未初始化的数组,第二部分将消除使该范围的最后部分错误的可能性。