如何使用 Google 脚本更改工具提示中数字的格式

How to change the format of a number in the tooltip with Google Scripts

本文关键字:数字 格式 工具提示 何使用 Google 脚本      更新时间:2023-09-26

我一直在试图找到一个详细的答案。但是没有运气,所以也许你们可以帮助我。

所以我正在努力使用谷歌脚本构建这个图表。我使用它在 Index.html 文件中构建了图表。

google.visualization.ColumnChart();

所以我收集了数据,并创建了一个数据表。

var dataTable = new google.visualization.DataTable();
    dataTable.addColumn('date', 'Week');
    dataTable.addColumn('number', 'Build');
    dataTable.addColumn('number', 'GP');

以及像这样将这些选项添加到我的图表中。

var options = {'title':'Production',
                   'width':1366,
                   'height':768,
                   'vAxis': {'format': 'currency'}
                   };

图表显示得非常精彩!但我有一个小问题。"数字"数据类型中保存的值实际上是货币值。但是,不是在工具提示中表示,而是像常规数字一样表示。它们没有逗号分隔,没有小数点,尤其是没有美元符号。这是我正在谈论的内容的屏幕截图。如何将这些特定的自定义项添加到工具提示中。有什么想法吗?

提前感谢你们的帮助!

真诚地
西卡里克斯

Google 提供了一个格式化程序

在这里,我使用格式化程序来格式化数据第二列中的数字。
这允许工具提示正确显示。

我还在垂直轴的图表选项中提供了一种格式,它与格式化程序是分开的。

google.load('visualization', '1', {'packages': ['corechart'], 'callback': drawChart});
function drawChart() {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Department');
  data.addColumn('number', 'Revenues');
  data.addRows([
    ['Shoes', 10700],
    ['Sports', -15400],
    ['Toys', 12500],
    ['Electronics', -2100],
    ['Food', 22600],
    ['Art', 1100]
  ]);
  var chart = new google.visualization.ColumnChart(document.getElementById('numberformat_div'));
  // create number formatter
  var formatter = new google.visualization.NumberFormat({
    prefix: '$',
    negativeParens: true
  });
  // format data in second column
  formatter.format(data, 1);
  chart.draw(data, {
    vAxis: {
      format: '$#,##0.00;($#,##0.00)'
    }
  });
}
<script src="https://www.google.com/jsapi"></script>
<div id="numberformat_div"></div>

您需要自定义工具提示字符串并自行设置字符串的格式以将其显示为货币。以下是您可以做到这一点的方法:

Number.prototype.formatMoney = function(c, d, t){
var n = this, 
    c = isNaN(c = Math.abs(c)) ? 2 : c, 
    d = d == undefined ? "." : d, 
    t = t == undefined ? "," : t, 
    s = n < 0 ? "-" : "", 
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
    j = (j = i.length) > 3 ? j % 3 : 0;
   return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/('d{3})(?='d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
 };

然后,只需将参数传递给工具提示并使用格式货币函数,即 build_amount.formatMoney(2)