将字符串格式化为Google文档的货币

时间:2014-07-08 00:54:51

标签: string google-apps-script formatting printf

Google Apps脚本的正确字符串格式结构是什么 - 根据documentation

这是关于C格式化的工作原理吗?

我无法想象如何使用'%' - 样式格式字符串来编写类似sprintf的字符串格式。

我正在使用Google Apps脚本从电子表格中复制数据,处理内存中的数据,然后将Google文档中的文本占位符替换为已处理的数据。

某些数据包括用于表示货币的数字,这些数字放在表格中。

我写了一个简单的函数来格式化字符串......

function formatStringCurrency(tempValue) {
  // Description
  return Utilities.formatString("$%d,%3.2f", tempValue/1000, tempValue%1000);
}

我通过这个函数解析必要的数据,以准备一个“类似货币”的字符串。

我的问题 - 我的格式化功能完美,除非字符串超过1,000,并且也是1000的倍数,即不包含数百或更少。

例如,这是我当前输出的截图示例......

spreadsheet output: first row $2,325.00, $9,300.00, second row $3,0.00, $12,0.00, etc...

第二行旨在显示$ 3,000.00和$ 12,000.00。

我考虑过格式化Google Doc表,但是手动或编程都无法实现。

我还试图从原始电子表格中表示的数字中删除所有格式,但这并没有什么区别。

与往常一样,任何协助都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

前导零(左边的零,直到最小位数)不适用于花车。但这将有效

function formatStringCurrency(tempValue) {
  // Description
  return Utilities.formatString("$%d,%02d%1.2f", tempValue/1000, tempValue%1000/10,tempValue%10);
}

function examples(){
  Logger.log(formatStringCurrency(1));
  Logger.log(formatStringCurrency(0.1));
  Logger.log(formatStringCurrency(1000));
  Logger.log(formatStringCurrency(100));
  Logger.log(formatStringCurrency(134141));
  Logger.log(formatStringCurrency(32423.43));
}

结果:

[14-07-08 19:47:21:138 HKT] $0,001.00
[14-07-08 19:47:21:141 HKT] $0,000.10
[14-07-08 19:47:21:145 HKT] $1,000.00
[14-07-08 19:47:21:149 HKT] $0,100.00
[14-07-08 19:47:21:154 HKT] $134,141.00
[14-07-08 19:47:21:157 HKT] $32,423.43