使用谷歌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格式的单元格。
对方的回答,设置格式在javascript“纯文本”,不能正常工作。 然而,这并不:
sheet.getRange(1,n).setNumberFormat('@STRING@');
所以对于格式化文本魔法值编程是“@ STRING @”!
基督教好回答的补充:我已经注意到,如果你的目标小区已经设置为文本格式(手动),设定一个值range.setValue()
可能不被(解释为文字像一个日期,或号),将自动更改数字格式。 因此,良好的解决方案,如果你要绝对保持文本格式
range.setValue( “01293849847”)的NumberFormat( “@”)。
并不是
range.numberFormat( “@”)的setValue( “01293849847”);
不幸的是,规划的文本不适合。 一旦细胞变得像一个日期的文件,只是格式的单元格。 发现了一种不创建日期)
var thisDate1 = Utilities.formatDate (new Date (), SpreadsheetApp.getActiveSpreadsheet (). getSpreadsheetTimeZone (), "MM//d//yyyy");
很抱歉这么晚才回复。 所有的人没有达到。
给力值的另一种方式来保存为纯文本:
前面加上一个引号: '
。 这对显示的值,也通过回读不包括quatation标记的价值没有影响。
let dateStr = '07-07-20017';
sheet.getRange(x, y).setValue("'" + dateStr);
let backStr = sheet.getRange(x, y).getValue();
assert(dateStr === backStr);
我做到了像下面和它的作品如我所料。 我-B柱上显示正确的填零3位数字(如004)和我的C柱显示正确的填零10位数字(例如,0060000001)的文本。 我下载了它转换成Excel作为与填零的文本文件。 我认为它会做的伎俩与日期作为文本为好。
winSS.getRange:位置赭格式( “000”)的位置茶色格式( '@')( “美国B2乙!”)。 winSS.getRange:位置赭格式( “0000000000”)位置茶色格式( '@')( “美国C2!C”)。