Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在给定条件下尝试删除多行时,超出了最大执行错误_Google Apps Script_Google Spreadsheet Api - Fatal编程技术网

Google apps script 在给定条件下尝试删除多行时,超出了最大执行错误

Google apps script 在给定条件下尝试删除多行时,超出了最大执行错误,google-apps-script,google-spreadsheet-api,Google Apps Script,Google Spreadsheet Api,目前,我正在尝试使用以下我设法编写的代码片段来实现这一点: var ss = SpreadsheetApp.openById('***'); var rowCount = ss.getLastRow(); for (i=1; i <= rowCount; i++) { var I = ss.getRange("I" + i).getValue(); var J = ss.getRange("J" + i).getValue(); var K = ss.get

目前,我正在尝试使用以下我设法编写的代码片段来实现这一点:

 var ss = SpreadsheetApp.openById('***');
 var rowCount = ss.getLastRow();


for (i=1; i <= rowCount; i++) {

   var I = ss.getRange("I" + i).getValue(); 
   var J = ss.getRange("J" + i).getValue(); 
   var K = ss.getRange("K" + i).getValue(); 
   var L = ss.getRange("L" + i).getValue(); 
   var M = ss.getRange("M" + i).getValue(); 
   var N = ss.getRange("N" + i).getValue(); 
   var O = ss.getRange("O" + i).getValue(); 
   var P = ss.getRange("P" + i).getValue(); 
   var Q = ss.getRange("Q" + i).getValue(); 
   var R = ss.getRange("R" + i).getValue(); 
   var S = ss.getRange("S" + i).getValue(); 
   var T = ss.getRange("T" + i).getValue();
  if(I === 0 && J === 0 && K === 0 && L === 0 && M === 0 && N === 0 && O === 0 && P === 0 && Q === 0 && R === 0 && S === 0 && T === 0){

    Logger.log(ss.getRange("I" + i).getA1Notation());

    ss.deleteRow(i);

  }


} 
var ss=SpreadsheetApp.openById('***');
var rowCount=ss.getLastRow();
对于(i=1;i试试这个:

function myDelete()
{
  var ss = SpreadsheetApp.openById('***');
  var allshts=ss.getSheets();
  var sh=allshts[0];
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  for(var i=vA.length-1;i>=0;i--) 
  {
    if(vA[i][8]==0 && vA[i][9]==0 && vA[i][10]==0 && vA[i][11]==0 && vA[i][12]==0 && vA[i][13]==0 && vA[i][14]==0 && vA[i][15]==0 && vA[i][16]==0 && vA[i][17]==0 && vA[i][18]==0 && vA[i][19]==0)
    {
      sh.deleteRow(i+1);
    }
  } 
}
最好从底部删除到顶部。

尝试以下操作:

function myDelete()
{
  var ss = SpreadsheetApp.openById('***');
  var allshts=ss.getSheets();
  var sh=allshts[0];
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  for(var i=vA.length-1;i>=0;i--) 
  {
    if(vA[i][8]==0 && vA[i][9]==0 && vA[i][10]==0 && vA[i][11]==0 && vA[i][12]==0 && vA[i][13]==0 && vA[i][14]==0 && vA[i][15]==0 && vA[i][16]==0 && vA[i][17]==0 && vA[i][18]==0 && vA[i][19]==0)
    {
      sh.deleteRow(i+1);
    }
  } 
}

最好从下到上删除。

这里有一个使用JS中方法的解决方案。它可以避免手动循环和测试每个条件

函数deleteRow(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//将所有数据作为二维数组获取
var data=sheet.getDataRange().getValues();
//遍历数组中的每一行

对于(var i=0;i这里有一个使用JS中的方法的解决方案。它可以避免手动循环和测试每个条件

函数deleteRow(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//将所有数据作为二维数组获取
var data=sheet.getDataRange().getValues();
//遍历数组中的每一行

对于(var i=0;i要删除行,这些列中的每一列都必须是
0
?是否
0
实际在单元格中?还是它是一个空白单元格?换句话说,如果哪怕有一列不是
0
,您就保留行?要删除行,这些列中的每一列都必须是
0
?是否
0
实际在单元格中?还是它是一个空白单元格换句话说,如果哪怕一列不是
0
,你也会保留该行?哦,sh.deleteRow(i+1);你不认为吗?是的。我把它改成了(i+1)。谢谢你,sh.deleteRow(i+1);你不认为吗?是的。我把它改成了(i+1)。谢谢