web-dev-qa-db-fra.com

Si var isnumber, pour le script

J'ai besoin d'exécuter un script qui contient la logique: si isNumber, Then DoSomething.

J'ai exécuté d'autres tests de ce type si alors comme si vide, et si la cellule contient "x". Ça devrait être simple mais je ne trouve pas de solution. J'ai essayé getNumberFormat, innum, isnumber, etc.

function ifIsNumber() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();

var substring1 = s.getRange("A1").getNumberFormat();

s.getRange("B1").setValue(substring1);

}

Ce code vérifie la cellule A1 et renvoie dans la cellule B1 la chaîne "0. ###############", pour les deux cellules contenant des nombres ET du texte. Comment puis-je identifier les cellules qui sont des nombres?

13
MonkeySeeMonkeyDo

Cela vérifiera si A1 est un nombre:

function ifIsNumber() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getActiveSheet();
    var substring1 = s.getRange("A1").getValue();
    if (!isNaN(parseFloat(substring1)) && isFinite(substring1)) {
        s.getRange("B1").setValue("Is a number");
    } else {
        s.getRange("B1").setValue("Not a number");
    }
}
10
Ed Nelson

Google Apps Script pourrait utiliser la plupart des méthodes et opérateurs JavaScript.

Une alternative pour vérifier si un objet est un nombre est d'utiliser typeof .

Le code suivant renverra le type de la valeur de la cellule spécifiée par la référence.

function typeofcellvalue(reference) {
  var ss = SpreadsheetApp.getActive();
  var rng = ss.getRange(reference);
  var value = rng.getValue();
  return typeof value;
}

Exemple d'utilisation comme fonction personnalisée

=typeofcellvalue("A1")

Si la cellule A1

  • a un nombre, le résultat sera number.
  • est vide, le résultat sera string.
6
Rubén

Si vous souhaitez effectuer des opérations sur les nombres si la valeur est un nombre ou une représentation sous forme de chaîne d'un nombre, vous pouvez effectuer les opérations suivantes:

if (!isNaN(myVar)){//myVar is either a number or a string representing a number
    myNumericVar = +myVar;//convert myVar to number if necessary
    //do number stuff
} else {
   //do non-numeric stuff
}

Voir:

manière (intégrée) en JavaScript pour vérifier si une chaîne est un nombre valide

0
user40176