将具有多个小数位的数字格式化为货币

Posted

技术标签:

【中文标题】将具有多个小数位的数字格式化为货币【英文标题】:Format a number with many decimal places as currency 【发布时间】:2016-01-13 12:02:34 【问题描述】:

我有这个脚本可以发送一封电子邮件,其中包含电子表格中单元格的特定值。

function sendNotification() 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var cellvalue = ss.getActiveCell().getValue().toString();
  var spr = SpreadsheetApp.getActiveSpreadsheet();
  var column = spr.getRange('k2');
  var values = column.getValues();
  var cell = sheet.getRange('k2');
  cell.setNumberFormat("$0.00");
  var range_bill_com = sheet.getRange('k2');
  if (range_bill_com.getValue() !=-1)
     var recipients = "email@gmail.com";
     var message = '';
     var subject = 'exemplo';
     var body = 'O valor previsto de Lucro/Prejuízo para hoje é de:' + values;
     MailApp.sendEmail(recipients, subject, body);
        
  ;

但在收到的电子邮件中,此值的格式与我想要的格式不同,即以美元为单位(例如:“O valor previsto de Lucro/Prejuízopara hoje é de:945.2709034832405)。 我尝试了一些更改,但不知道如何以我想要的格式获取消息值。 谁能帮我改一下这个脚本?

【问题讨论】:

您将获得两次活动电子表格,其中包含两个不同的变量,无需复制。重复使用第一个。 如果范围是单个单元格,则不需要使用getValues()。使用getValue()(末尾没有“s”)。它只得到一个值。它是一维数组,而不是二维数组。 getValues()(最后是“s”)得到一个二维数组。 这是一个可能有帮助的 *** 帖子:Formatting numbers from spreadsheet 【参考方案1】:

首先修剪小数位数,然后用前导美元符号连接文本。

function sendNotification() 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var cellvalue = ss.getActiveCell().getValue().toString();

  var column = ss.getRange('k2');
  var value = column.getValue();
  var cell = sheet.getRange('k2');
  cell.setNumberFormat("$0.00");

  var range_bill_com = sheet.getRange('k2');

  if (range_bill_com.getValue() !=-1)
    var recipients = "email@gmail.com";
    var message = '';
    var subject = 'exemplo';
    var valueFormatedAsCurrency = formatToCurrency(value);
    var body = 'O valor previsto de Lucro/Prejuízo para hoje é de:' + 
      valueFormatedAsCurrency;
    MailApp.sendEmail(recipients, subject, body);
  
;

function formatToCurrency(inputArg) 
  //Logger.log('typeof inputArg: ' + typeof inputArg);

  var inputToNumber = Number(inputArg);
  var fixedValue = inputToNumber.toFixed(2);

  var valAsString = fixedValue.toString();
  //Logger.log('typeof valAsString: ' + typeof valAsString);

  var valAsCurrency = "$" + valAsString;

  //Logger.log('valAsCurrency: ' + valAsCurrency);
  return valAsCurrency;
;

【讨论】:

对不起,桑迪,但我将 formatToCurrency 函数按什么顺序放入脚本中?我没有这方面的经验。此外,K2 细胞的值是不断变化的。 哈哈!这是完美的!我只是更改了“var body” para“var body = 'O valor previsto de Lucro/Prejuízo para hoje é de:' + valueFormatedAsCurrency”,电子邮件就完美了!!!非常感谢! 请将答案标记为正确。感谢您的反馈。我更改了变量名。

以上是关于将具有多个小数位的数字格式化为货币的主要内容,如果未能解决你的问题,请参考以下文章

将数字数组格式化为具有最小宽度的货币

尝试将 UITextField 格式化为像货币计算器一样仅用于 iOS 中的数字输入

将十进制值格式化为具有 2 个小数位的货币 [重复]

如何仅使用货币代码将数字格式化为货币?

将数字格式化为货币金额

如何使用正则表达式将数字格式化为货币