Formater une cellule Google Sheets en clair via le Script Apps

en utilisant le Script Googleapps, je veux définir le format D'une cellule de Google Sheets à du texte brut.

la raison pour laquelle je veux faire ceci est parce que je veux montrer une date dans le format de date des États-Unis (MM/JJ/AAAA). [nous pouvons supposer que la locale dans le compte Google de L'OP est réglée pour utiliser le JJ/MM/AAAA, un format de date plus courant. –Ed.]

je crée la chaîne comme ceci:

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

... qui renvoie la date aux états-UNIS format, 06/13/2012, qui est ce que je veux. Cependant, quand je mets la valeur d'une cellule à cette chaîne:

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

... la date est mise en forme dans la cellule selon mes paramètres régionaux, 13/06/2012, not the U. S. format.

La suite de l'opération échoue également, parce que la date est retournée dans le format standard, pas les états-UNIS format:

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

quand la cellule est formatée en texte simple, et non en date, Tout fonctionne très bien.

Donc, ma question est, comment formater une cellule en JavaScript.

18
demandé sur Anton Pil 2012-12-07 11:41:36

5 réponses

L'autre réponse, pour définir le format 'texte brut' en javascript, ne fonctionne pas. Cependant, ceci fait:

sheet.getRange(1,n).setNumberFormat('@STRING@');

donc la valeur magique pour formater du texte de façon programmatique est ' @STRING@'!

25
répondu christian.simms 2013-10-23 14:57:01

un complément à Christian good answer : J'ai remarqué que si votre cellule cible a déjà été configurée au format texte (manuellement), définir une valeur avec range.setValue() qui pourrait ne pas être interprété comme un texte (comme une date, ou un nombre), changera automatiquement le format de nombre. Donc la bonne solution, si vous voulez vraiment garder un format de texte est

plage.setValue ("01293849847").numberFormat ("@");

et non

plage.numberFormat ("@").setValue ("01293849847");

4
répondu Cédric NICOLAS 2016-06-23 23:34:54

Malheureusement, le texte du plan ne correspondent pas. Document dès que la cellule obtient quelque chose comme une date, il suffit de formater la cellule. Trouvé un moyen de ne pas créer de date)

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

Désolé de répondre si tard. Toutes les mains n'arrivaient pas.

1
répondu Anton Pil 2013-03-06 07:46:08

une autre façon de forcer la valeur à être sauvegardée en texte simple:

Ajouter un guillemet: '. Cela n'a aucun effet sur la valeur affichée et aussi en lisant la valeur retour la marque de quatation n'est pas incluse.

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

let backStr = sheet.getRange(x, y).getValue();
assert(dateStr === backStr);
1
répondu tenbits 2017-07-07 09:32:47

je l'ai fait comme ci-dessous et il fonctionne comme je m'y attendais. Ma colonne B indique un nombre à 3 chiffres correctement rempli (p. ex., 004) et ma colonne C indique un nombre à 10 chiffres correctement rempli (p. ex., 0060000001) en tant que textes. J'ai téléchargé le fichier qu'il converti en Excel comme textes avec les zéros capitonnés. Je pense qu'il ferait l'affaire avec la Date comme un texte aussi bien.

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

0
répondu Hamzah Djuned 2017-11-25 09:39:46