Ant*_*Pil 21 format plaintext google-sheets google-apps-script
使用Google Apps脚本,我想将Google表格单元格的格式设置为纯文本.
我想这样做的原因是因为我想以美国日期格式(MM/DD/YYYY)显示日期.[我们可以假设OP的Google帐户中的区域设置设置为使用DD/MM/YYYY,这是一种更常见的日期格式.-Ed.]
我创建这样的字符串:
var thisDate = Utilities.formatDate (new Date (), SpreadsheetApp.getActiveSpreadsheet (). getSpreadsheetTimeZone (), "MM / d / yyyy");
Run Code Online (Sandbox Code Playgroud)
...以美国格式返回日期,06/ 13/2012,这就是我想要的.但是,当我将单元格的值设置为该字符串时:
sheet.getRange (1, n). setValue (thisDate);
Run Code Online (Sandbox Code Playgroud)
...日期根据我的区域设置格式化为单元格,13/06/ 2012,而不是美国格式.
以下操作也会失败,因为日期以标准格式返回,而不是美国格式:
sheet.getRange (1, n). getValue () == "06/13/2012"
Run Code Online (Sandbox Code Playgroud)
当单元格格式化为纯文本而不是日期时,一切正常.
所以,我的问题是,如何使用JavaScript格式化单元格.
小智 32
另一个答案是,在javascript中将格式设置为"纯文本"不起作用.但是,这样做:
sheet.getRange(1,n).setNumberFormat('@STRING@');
Run Code Online (Sandbox Code Playgroud)
因此,以编程方式格式化文本的神奇价值是'@ STRING @'!
另一种强制将值保存为纯文本的方法:
在前面加引号:'. 这对显示的值没有影响,而且通过读回值,不包括四分号。
let dateStr = '07-07-20017';
sheet.getRange(x, y).setValue("'" + dateStr);
let backStr = sheet.getRange(x, y).getValue();
assert(dateStr === backStr);
Run Code Online (Sandbox Code Playgroud)
对基督徒的好回答的补充:我注意到如果你的目标单元格已经设置为文本格式(手动),设置一个range.setValue()
可能没有被解释为文本的值(如日期或数字)将会改变自动数字格式.所以很好的解决方案,如果你想要保持文本格式是
range.setValue( "01293849847")的NumberFormat( "@").
并不是
range.numberFormat( "@")的setValue( "01293849847");
不幸的是,该计划的文本不符合要求。一旦单元格获得日期之类的内容,就立即记录,只需格式化单元格即可。找到了一种不创建日期的方法)
var thisDate1 = Utilities.formatDate (new Date (), SpreadsheetApp.getActiveSpreadsheet (). getSpreadsheetTimeZone (), "MM//d//yyyy");
Run Code Online (Sandbox Code Playgroud)
抱歉这么晚才回复。所有的手都没有到达。
| 归档时间: |
|
| 查看次数: |
9778 次 |
| 最近记录: |