16

Utilizzando Script di Google Apps, voglio impostare il formato per una cella di Google Fogli in testo normale.Formatta una cella di Google Fogli in testo semplice tramite Script di app

Il motivo per cui voglio farlo è perché voglio mostrare una data nel formato data degli Stati Uniti (MM/GG/AAAA). [Possiamo supporre che la localizzazione nell'account Google dell'OP sia impostata per utilizzare GG/MM/AAAA, un formato di data più comune. . -Ed]

creo la stringa in questo modo:

var thisDate = Utilities.formatDate (new Date(), SpreadsheetApp.getActiveSpreadsheet(). getSpreadsheetTimeZone(), "MM/d/yyyy"); 

... che restituisce la data nel formato degli Stati Uniti, 2012/06/13, che è quello che voglio. Tuttavia, quando ho impostato il valore di una cella a quella stringa:

sheet.getRange (1, n). setValue (thisDate); 

... la data è formattata nella cella secondo il mio locale, 13/06/2012, non il formato degli Stati Uniti.

La seguente operazione non riesce anche, perché la data viene restituita nel formato standard, non il formato degli Stati Uniti:

sheet.getRange (1, n). getValue() == "06/13/2012" 

Quando la cella è formattata come testo normale, e non una data, tutto funziona bene.

Quindi, la mia domanda è, come formattare una cella utilizzando JavaScript.

risposta

0

Purtroppo il testo del piano non si adattava. Documento non appena la cella ottiene qualcosa come una data, basta formattare la cella. trovato il modo di non creare data)

var thisDate1 = Utilities.formatDate (new Date(), SpreadsheetApp.getActiveSpreadsheet(). getSpreadsheetTimeZone(), "MM//d//yyyy"); 

spiacenti risposta così tardi. Tutte le mani non hanno raggiunto.

23

L'altra risposta, per impostare il formato su "testo normale" in javascript, non funziona. Tuttavia, questo:

sheet.getRange(1,n).setNumberFormat('@[email protected]'); 

Quindi il valore magico per la formattazione del testo a livello di programmazione è '@ STRING @'!

+1

FM. Google documenta queste cose ovunque? – bmacnaughton

+1

Ho scoperto che anche solo "@" funziona. Questo link aiuta - http://www.blackcj.com/blog/2015/05/18/cell-number-formatting-with-google-apps-script/ – bmacnaughton

3

Un complemento a Christian buona risposta: Ho notato che se la vostra cella di destinazione è già stata impostata in formato testo (manualmente), impostando un valore con range.setValue() che potrebbero non essere state interpretate come un testo (come una data, o un numero), cambierà automaticamente il formato del numero. Quindi la buona soluzione, se si vuole assolutamente mantenere un formato di testo è

range.setValue ("01.293.849,847 mila") NumberFormat ("@").;

e non

range.numberFormat ("@").setValue ("01.293.849,847 mila");

1

Un altro modo per forzare il valore da salvare come testo normale:

anteporre una virgoletta: '. Ciò non ha alcun effetto sul valore visualizzato e anche leggendo il valore posteriore il marchio quatation non è incluso.

let dateStr = '07-07-20017'; 
sheet.getRange(x, y).setValue("'" + dateStr); 

let backStr = sheet.getRange(x, y).getValue(); 
assert(dateStr === backStr); 
+0

Questo è quello facile, grazie :) sappiamo se questo è documentato da qualche parte? – mlvljr

0

L'ho fatto come di seguito e funziona come mi aspettavo. La mia colonna B mostra il numero corretto a 3 cifre riempito a zero (ad es., 004) e la mia colonna C mostra il numero corretto a 10 cifre riempito a zero (ad esempio, 0060000001) come testo. Ho scaricato il file convertito in Excel come testo con gli zeri imbottiti. Penso che farebbe il trucco anche con il Date come testo.

winSS.getRange ("US! B2: B"). SetNumberFormat ("000"). SetNumberFormat ("@"); winSS.getRange: setNumberFormat ("0000000000") setNumberFormat ("@"); ("US C2 C!")..

Problemi correlati