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