2016-02-07 6 views
6

Ich muss ein Skript ausführen, das die Logik enthält: Wenn isNumber, dann DoSomething.Wenn var isnumber, für Skript

Ich habe andere solche ausgeführt, wenn dann Tests wie wenn leer, und wenn Zelle enthält "x". Es sollte einfach sein, aber ich kann keine Lösung finden. Ich habe versucht, getNumberFormat, innum, ISNUMBER usw.

function ifIsNumber() { 

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

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

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

} 

Dieser Code prüft die Zelle A1 und kehrt in Zelle B1 die Zeichenkette "0. ###############" , für beide Zellen, die Zahlen UND Text enthalten. Wie kann ich identifizieren, welche Zellen Zahlen sind?

Antwort

5

Dies wird überprüfen, ob A1 eine Zahl:

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 nuumber") 
} 
} 
+0

Funktioniert perfekt! Ich bin ein wenig überrascht, dass sie eine solche Excel-Funktion nicht implementiert haben. Danke @Ed! – graphicdezine

+3

ISNUMBER() ist bereits eine integrierte Formel in Google Tabellen. Genau wie in Excel. https://support.google.com/docs/answer/3093296?hl=de – Jonathon

+1

Ja, aber scheinbar keinen solchen Dienst in der Skriptsprache ... – graphicdezine

5

Google Apps Script meisten der JavaScript-Methoden und Operatoren verwenden können.

Eine Alternative zur Überprüfung, ob ein Objekt eine Nummer ist, ist typeof.

Der folgende Code gibt den Typ des Werts der durch die Referenz angegebenen Zelle zurück.

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

Beispiel für die Verwendung als benutzerdefinierte Funktion

=typeofcellvalue("A1") 

Wenn Zelle A1

  • eine Nummer hat, wird das Ergebnis number sein.
  • ist leer, das Ergebnis wird string sein.
+1

Diese Antwort ist besser, weil es mit verschiedenen Spracheinstellungen funktioniert, zB für Länder mit Komma zwischen dezimalen und ganzzahligen Teilen der Zahl. Für Daten gibt es 'Objekt' zurück, für Bilder (Formel 'Bild') gibt es 'String', aber ich habe 'Objekt' erwartet. Hyperlinks sind auch Zeichenfolgen. –