web-dev-qa-db-fra.com

Scripts Google Spreadsheets: vérifier si la cellule est vide

Je veux entrer une variable dans une cellule uniquement si la cellule est vide. La déclaration if, cependant, ne fonctionne pas. Aucun conseil?

var ss=SpreadsheetApp.getActiveSpreadsheet();
var r=ss.getRange("'odpovědi'!A2:J");

var rws=r.getNumRows();

ax=r.getCell(rws-1, 10).getValue();

if (ax == "") {
  ax = "foo";
  r.getCell(rws-1, 9).setValue(ax);
}
8
orobinec

Pas besoin d'extraire la valeur pour déterminer si la cellule est vide. L'API Google Spreadsheet a déjà une méthode pour cela: Plage - Méthode isBlank

var cell = r.getCell(rws-1, 10);

if (cell.isBlank()) {
    cell.setValue("foo");
}
8
A. Masson

Essayer:

function myFunction() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var s=ss.getSheetByName('odpovědi')
  var lr=s.getLastRow()  
  var ax=s.getRange(lr, 10).getValue();
     if(ax == ""){
        ax = "foo";
        s.getRange(lr, 10).setValue(ax);
  }
  }
3
Ed Nelson

Si vous avez déjà une valeur de cellule, utilisez les opérateurs === ou !== pour éviter la conversion de type (où 0 == ""). 

Extrait de code permettant de réduire les valeurs de cellules non vides

var sheet = ss.getSheets()[0];     
var range = sheet.getRange("E2:H5");
var currentValues = range.getValues();  

var newValues = [];
for (var row in currentValues) {
  var newRow = []; 
  for (var col in currentValues[row]) {
    if (currentValues[row][col] !==  "") { // if not empty cell
      newRow[col] = currentValues[row][col] - 1;          
    }
    else {
      newRow[col] = currentValues[row][col];
    }
  }
  newValues[row] = newRow;
}    
range.setValues(newValues);
1
koxt