Service error: Spreadsheets using isblank()
Service error: Spreadsheets using isblank()
2 天以来我遇到了一个大问题,我的功能不再工作了:/
"Service error: Spreadsheets" 在 "if (cell.isBlank())"
function miseEnForme(){
var classeur = SpreadsheetApp.getActive();
var feuilleAdm = classeur.getSheetByName("SuiviAdministratif");
var lastRow;
for (var row = 3; row < 1000; row++) {
var cell=feuilleAdm.getRange(row,3);
if (cell.isBlank()) {
lastRow =row;
break;
}
}
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");
}
}
是我的错还是Google有什么改变?
如何解决问题?
谢谢
检查此 link。我猜代码没有任何问题。只是 Google 服务器正试图诱使您使用更面向批处理的方法。例如,您可以通过调用 var datA=sheet.getDataRange().getValues();
获取所有数据,然后将所有数据放入一个二维数组中。 Google 服务器可以更轻松地处理您的流程,并且对您来说性能会更好。我将复制一份您的代码,看看是否可以为您简化它。也许你可以告诉我你的数据是什么样子的。
我还没有测试过这段代码。如果您可以与我分享您的一些数据,我将很乐意这样做。不过,这应该非常接近。我尝试遵循与您使用的相同的基本方法,以便您可以更轻松地弄清楚发生了什么。
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');
}
}
}
正如 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");
}
}
有关 getLastRow 方法的更多信息:https://developers.google.com/apps-script/reference/spreadsheet/sheet#getLastRow()
2 天以来我遇到了一个大问题,我的功能不再工作了:/ "Service error: Spreadsheets" 在 "if (cell.isBlank())"
function miseEnForme(){
var classeur = SpreadsheetApp.getActive();
var feuilleAdm = classeur.getSheetByName("SuiviAdministratif");
var lastRow;
for (var row = 3; row < 1000; row++) {
var cell=feuilleAdm.getRange(row,3);
if (cell.isBlank()) {
lastRow =row;
break;
}
}
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");
}
}
是我的错还是Google有什么改变? 如何解决问题?
谢谢
检查此 link。我猜代码没有任何问题。只是 Google 服务器正试图诱使您使用更面向批处理的方法。例如,您可以通过调用 var datA=sheet.getDataRange().getValues();
获取所有数据,然后将所有数据放入一个二维数组中。 Google 服务器可以更轻松地处理您的流程,并且对您来说性能会更好。我将复制一份您的代码,看看是否可以为您简化它。也许你可以告诉我你的数据是什么样子的。
我还没有测试过这段代码。如果您可以与我分享您的一些数据,我将很乐意这样做。不过,这应该非常接近。我尝试遵循与您使用的相同的基本方法,以便您可以更轻松地弄清楚发生了什么。
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');
}
}
}
正如 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");
}
}
有关 getLastRow 方法的更多信息:https://developers.google.com/apps-script/reference/spreadsheet/sheet#getLastRow()