spreadsheetapp script macro google example ejemplos apps javascript google-apps-script google-spreadsheet format plaintext

javascript - macro - Formatee una celda de Hojas de cálculo de Google en texto plano mediante Apps Script



msgbox google script (5)

Con Google Apps Script, quiero establecer el formato de una celda de Hojas de cálculo de Google en texto sin formato.

La razón por la que quiero hacer esto es porque quiero mostrar una fecha en el formato de fecha de los EE. UU. (MM / DD / AAAA). [Podemos suponer que la configuración regional en la cuenta de Google del OP está configurada para usar DD / MM / YYYY, un formato de fecha más común. -Ed.]

Creo la cadena como esta:

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

... que devuelve la fecha en el formato de EE. UU., 13/06/2012 , que es lo que quiero. Sin embargo, cuando configuro el valor de una celda para esa cadena:

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

... la fecha está formateada en la celda según mi configuración regional, 13/06/2012 , no en el formato de EE. UU.

La siguiente operación también falla, porque la fecha se devuelve en el formato estándar, no en el formato de EE. UU .:

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

Cuando la celda está formateada como texto sin formato, y no como una fecha, todo funciona bien.

Entonces, mi pregunta es cómo formatear una celda usando JavaScript.


La otra respuesta, para establecer el formato de ''texto sin formato'' en javascript, no funciona. Sin embargo, esto hace:

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

Entonces, el valor mágico para formatear el texto mediante programación es ''@ STRING @''.


Lamentablemente, el texto del plan no encajaba. Documente en cuanto la celda tenga algo así como una fecha, simplemente formatee la celda. Encontré una forma de no crear fecha)

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

Lo siento, tan tarde respuesta. Todas las manos no alcanzaron.


Lo hice como a continuación y funciona como esperaba. Mi columna B muestra el número correcto de 3 dígitos lleno de cero (por ejemplo, 004) y mi columna C muestra el número correcto de 10 dígitos lleno de cero (por ejemplo, 0060000001) como textos. Descargué el archivo que convirtió a Excel como texto con los ceros rellenos. Creo que haría el truco con la fecha como texto también.

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


Un complemento a la buena respuesta cristiana: me he dado cuenta de que si su celda objetivo ya ha sido configurada en formato de texto (manualmente), establezca un valor con range.setValue() que podría no ser interpretado como un texto (como una fecha o un número), cambiará automáticamente el formato del número. Entonces, la buena solución, si quieres definitivamente mantener un formato de texto es

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

y no

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


Otra forma de forzar que el valor se guarde como texto sin formato:

Anteponer una comilla: '' . Esto no tiene ningún efecto sobre el valor mostrado y también al leer el valor de nuevo, la marca de cuarteo no está incluida.

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