在Google Apps脚本中将字符串值格式化为货币值

时间:2014-12-09 21:30:37

标签: google-apps-script google-sheets google-form

我创建了一个Google表单,其中包含一个字段,用户输入一个数字值(表单上有数字验证),然后提交。当提交号码(例如,34.00)时,它在Google电子表格中显示为34,这很烦人但可以理解。我已经有一个脚本在提交表单时运行,以生成在表单上提交的信息的格式良好的版本,但是我无法将该值格式化为货币值(即34 - > $ 34.00)使用Utilities.formatString函数。有人可以帮忙吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

Event Objects中记录的表单提交事件的values属性是一个字符串数组,如下所示:

['2015/05/04 15:00', 'amin@example.com', 'Bob', '27', 'Bill', '28', 'Susan', '25']

因此,希望将任何这些值用作除String之外的任何值的脚本都需要执行explicit type conversion,或者使用一元运算符(+)将字符串强制转换为数字。

var numericSalary = +e.values[9];

或者,您可以通过从事件中包含的range属性中读取提交的值来利用Sheets的内置类型确定。就像在键盘上输入值时一样,Sheets会尽力解释表单值 - 在这种情况下,J列中的值将被解释为Number,所以你可以这样得到它:

var numericSalary = e.range.getValues()[9];

这比使用values数组慢,它仍然会提供未格式化的值。

格式

Utilities.formatString使用" sprintf-like"格式化值。如果您搜索互联网,您会找到许多sprint variables的参考资料,其中一些很有帮助。这是一种将浮点数转换为美元格式字符串的格式:

'$%.2f'

$ - nothing magic, just a dollar sign
% - magic begins here, the start of a format
.2 - defines a number with two decimal places, but unspecified digits before the radix
f - expect a floating point number

因此,这是您最简单的代码行,可以执行您正在寻找的转换:

var currentSalary = Utilities.formatString( '$%.2f', +e.values[9] );

答案 1 :(得分:0)

我知道这是几年前的事,但可能会帮助别人。 您应该可以在此之间添加逗号 .toLocaleString();格式化十进制字符串后,只需将它们一起包含在一起,就在开头添加“ $”符号。 例如:

 myString = Utilities.formatString( '%.2f', myNumber );
 myString = '$' + myString.toLocaleString();