Javascript 服务错误:使用isblank()的电子表格

Javascript 服务错误:使用isblank()的电子表格,javascript,google-apps-script,google-sheets,spreadsheet,Javascript,Google Apps Script,Google Sheets,Spreadsheet,2天后我遇到了一个大问题,我的功能不再工作:/ 服务错误:电子表格“位于”if(cell.isBlank()) 函数miseEnForme(){ var classeur=SpreadsheetApp.getActive(); var feuilleAdm=classeur.getSheetByName(“Suivia管理批准”); var lastRow; 对于(变量行=3;行

2天后我遇到了一个大问题,我的功能不再工作:/ 服务错误:电子表格“位于”if(cell.isBlank())

函数miseEnForme(){
var classeur=SpreadsheetApp.getActive();
var feuilleAdm=classeur.getSheetByName(“Suivia管理批准”);
var lastRow;
对于(变量行=3;行<1000;行++){
var cell=feuilleAdm.getRange(第3行);
if(cell.isBlank()){
lastRow=行;
打破
}
}
对于(var i=3;i请检查此项。我猜代码没有问题。只是Google服务器试图诱使您使用更面向批处理的方法。例如,您可以通过一次调用
var data=sheet.getDataRange().getValues()获取所有数据
然后你将拥有一个二维数组中的所有数据。谷歌服务器将更容易处理你的过程,它将为你提供更好的性能。我将复制你的代码,看看是否可以为你简化它。也许你可以告诉我你的数据是什么样子的

我还没有测试过这段代码。如果你能与我共享一些数据,我很乐意这样做。不过这应该非常接近。我尝试了与你使用的相同的基本方法,以便你能够更轻松地了解发生了什么

function miseEnForme()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sht = ss.getSheetByName("SuiviAdministratif");
  var datrng = sht.getDataRange();
  var datA = datrng.getValues();//datA is a 2 dimensional array starts at zero
  var lastCol = datrng.getLastColumn();

  for(var i=2;i<datA.length;i++)
  {
    if(datA[1][i] == ("RS" || "RP" || "RD"))
    {
      sht.getRange(i+1,1,1,lastCol).setBackground('#ff0000');
    }
    if(datA[1][i] == "C")
    {
      sht.getRange(i+1,1,1,lastCol).setBackground('#00ff00');
    }
    if(datA[1][i] == "O")
    {
      sht.getRange(i+1,1,1,lastCol).setBackground('#ffffff');
    }
  }
}
函数miseEnForme()
{
var ss=SpreadsheetApp.getActiveSpreadsheet()
var sht=ss.getSheetByName(“Suivia管理批准”);
var datrng=sht.getDataRange();
var datA=datrng.getValues();//数据是从零开始的二维数组
var lastCol=datrng.getLastColumn();

对于(var i=2;i,正如Cooper所说,您的代码不是这里的问题。 否则,一点变通方法将帮助您:

function miseEnForme(){
  var classeur = SpreadsheetApp.getActive();
  var feuilleAdm = classeur.getSheetByName("SuiviAdministratif");

  // getLastRow() return the value of the last row used in the sheet
  var lastRow = feuilleAdm.getLastRow();

  for (var i =3; i<lastRow;i++){
   if (feuilleAdm.getRange("B"+i).getDisplayValue()=="RS" || feuilleAdm.getRange("B"+i).getDisplayValue()=="RP" || feuilleAdm.getRange("B"+i).getDisplayValue()=="RD")
     feuilleAdm.getRange("SuiviAdministratif!A"+i+":AB"+i).setBackground("red");

   if (feuilleAdm.getRange("B"+i).getDisplayValue()=="C")
     feuilleAdm.getRange("SuiviAdministratif!A"+i+":AB"+i).setBackground("#00ff00");

   if (feuilleAdm.getRange("B"+i).getDisplayValue()=="O")
     feuilleAdm.getRange("SuiviAdministratif!A"+i+":AB"+i).setBackground("white");
  }
}
函数miseEnForme(){
var classeur=SpreadsheetApp.getActive();
var feuilleAdm=classeur.getSheetByName(“Suivia管理批准”);
//getLastRow()返回工作表中使用的最后一行的值
var lastRow=feuilleAdm.getLastRow();

对于(var i=3;我认为它根本不运行,还是在几次迭代后抛出此错误?您是否可以记录行(Logger.Log(row))以确定哪一行出现问题,并检查该行是否有不同的数据?
function miseEnForme(){
  var classeur = SpreadsheetApp.getActive();
  var feuilleAdm = classeur.getSheetByName("SuiviAdministratif");

  // getLastRow() return the value of the last row used in the sheet
  var lastRow = feuilleAdm.getLastRow();

  for (var i =3; i<lastRow;i++){
   if (feuilleAdm.getRange("B"+i).getDisplayValue()=="RS" || feuilleAdm.getRange("B"+i).getDisplayValue()=="RP" || feuilleAdm.getRange("B"+i).getDisplayValue()=="RD")
     feuilleAdm.getRange("SuiviAdministratif!A"+i+":AB"+i).setBackground("red");

   if (feuilleAdm.getRange("B"+i).getDisplayValue()=="C")
     feuilleAdm.getRange("SuiviAdministratif!A"+i+":AB"+i).setBackground("#00ff00");

   if (feuilleAdm.getRange("B"+i).getDisplayValue()=="O")
     feuilleAdm.getRange("SuiviAdministratif!A"+i+":AB"+i).setBackground("white");
  }
}