2016-02-07 10 views
6

Ho bisogno di eseguire uno script che contiene la logica: If isNumber, Then DoSomething.Se var è il numero, per lo script

Ho eseguito altri tali se poi prove come se vuoto, e se la cella contiene "x". Dovrebbe essere semplice ma non riesco a trovare una soluzione. Ho provato getNumberFormat, innum, ISNUMBER, ecc

function ifIsNumber() { 

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

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

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

} 

Questa cella codice controlla A1 e torna nella cella B1 la stringa "0. ###############" , per entrambe le celle contenenti numeri e testo. Come posso identificare quali celle sono numeri?

risposta

5

Questo verificherà se A1 è un numero:

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

Funziona perfettamente! Sono un po 'sorpreso che non abbiano implementato una funzione go-to Excel. Grazie @Ed! – graphicdezine

+3

ISNUMBER() è già una formula incorporata in Fogli Google. Proprio come per Excel. https://support.google.com/docs/answer/3093296?hl=it – Jonathon

+1

Sì, ma apparentemente non esiste un tale servizio nel linguaggio di scripting ... – graphicdezine

5

Google Apps Script potrebbe utilizzare la maggior parte dei metodi e degli operatori JavaScript.

Un'alternativa per verificare se un oggetto è un numero è utilizzare typeof.

Il codice seguente restituirà il tipo del valore della cella specificato dal riferimento.

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

Esempio di utilizzo come una funzione personalizzata

=typeofcellvalue("A1") 

Se la cella A1

  • ha un numero, il risultato sarà number.
  • vuoto, il risultato sarà string.
+1

Questa risposta è migliore perché funziona con impostazioni di lingua diverse, ad esempio per i paesi con una virgola tra le parti decimali e quelle intere del numero. Per le date restituirà 'oggetto', per le immagini (formula 'Immagine') fornisce 'stringa', ma mi aspettavo 'oggetto'. I collegamenti ipertestuali sono anche stringhe. –

Problemi correlati