预先提供的格式列表是here。对于某些格式,等效的 javascript 是相对简单的。对于其他人来说,这是非常困难的。并处理用户定义的自定义格式 - 祝你好运。
这是一个屏幕截图,显示已复制为 html 的单元格内容 - 没有像您所做的那样修复,而是使用电子表格中的格式。
有一些 Google Apps 脚本帮助函数,Utilities.formatString() 和 Utilities.formatDate()。
对于日期和时间,例如 "h:mm:ss am/pm",电子表格格式几乎是该实用程序所需的 - 我发现您只需要调整某些格式的 am/pm 名称:
var format = cell.getNumberFormat();
var jsFormat = format.replace('am/pm','a');
var jsDate = Utilities.formatDate(
date,
this.tzone,
jsFormat);
对于美元,例如"\"$\"#,##0.00":
var dollars = Utilities.formatString("$%.2f", num);
对于百分比格式的数字,例如"0.00%":
var matches = format.match(/\.(0*?)%/);
var fract = matches ? matches[1].length : 0; // Fractional part
var percent = Utilities.formatString("%.Xf%".replace('X',String(fract)), 100*num);
对于像"0.000E+00" 这样的指数,利用javascript 内置toExponential(),并调整输出使其看起来更像电子表格:
if (format.indexOf('E') !== -1) {
var fract = format.match(/\.(0*?)E/)[1].length; // Fractional part
return num.toExponential(fract).replace('e','E');
}
您只需与存储的电子表格格式进行字符串比较即可选择正确的转换器。
我所说的极其困难是什么意思?尝试获得一个格式化程序,它提供与表格为# ?/? 和# ??/?? 所做的完全相同的分子和分母选择!在电子表格中,这是一个格式问题 - 在脚本中,它更多...