格式在纯文本通过Google Apps脚本在谷歌表单元格(Format a Google Sheet

2019-07-04 17:31发布

使用谷歌Apps脚本,我想设置的格式为谷歌表单元格为纯文本。

我想这样做的原因是因为我想表明美国日期格式的日期(MM / DD / YYYY)。 [我们可以假设在OP的谷歌帐户的区域设置为使用DD / MM / YYYY,一种较为常见的日期格式。 -Ed。]

我创建这样的字符串:

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

...返回美国的格式,06月13日 ,这是我想要的日期。 然而,当我设置为字符串单元格的值:

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

...日期是根据我的语言环境,13/06/2012,而不是美国格式进行格式化进入细胞。

下面的操作也失败了,因为日期的标准格式,而不是美国格式返回:

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

当单元格的格式为纯文本,而不是一个日期,一切工作正常。

所以,我的问题是,如何使用JavaScript格式的单元格。

Answer 1:

对方的回答,设置格式在javascript“纯文本”,不能正常工作。 然而,这并不:

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

所以对于格式化文本魔法值编程是“@ STRING @”!



Answer 2:

基督教好回答的补充:我已经注意到,如果你的目标小区已经设置为文本格式(手动),设定一个值range.setValue()可能不被(解释为文字像一个日期,或号),将自动更改数字格式。 因此,良好的解决方案,如果你要绝对保持文本格式

range.setValue( “01293849847”)的NumberFormat( “@”)。

并不是

range.numberFormat( “@”)的setValue( “01293849847”);



Answer 3:

不幸的是,规划的文本不适合。 一旦细胞变得像一个日期的文件,只是格式的单元格。 发现了一种不创建日期)

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

很抱歉这么晚才回复。 所有的人没有达到。



Answer 4:

给力值的另一种方式来保存为纯文本:

前面加上一个引号: ' 。 这对显示的值,也通过回读不包括quatation标记的价值没有影响。

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

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


Answer 5:

我做到了像下面和它的作品如我所料。 我-B柱上显示正确的填零3位数字(如004)和我的C柱显示正确的填零10位数字(例如,0060000001)的文本。 我下载了它转换成Excel作为与填零的文本文件。 我认为它会做的伎俩与日期作为文本为好。

winSS.getRange:位置赭格式( “000”)的位置茶色格式( '@')( “美国B2乙!”)。 winSS.getRange:位置赭格式( “0000000000”)位置茶色格式( '@')( “美国C2!C”)。



文章来源: Format a Google Sheets cell in plaintext via Apps Script