将具有多个小数位的数字格式化为货币
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”,电子邮件就完美了!!!非常感谢! 请将答案标记为正确。感谢您的反馈。我更改了变量名。以上是关于将具有多个小数位的数字格式化为货币的主要内容,如果未能解决你的问题,请参考以下文章