首页 > 解决方案 > 带有正数/负数的 Utilities.formatString

问题描述

我想以丰富的格式显示我的数字字符串数据,当数字为正数或负数时应用不同的颜色。

我目前的代码是:

var url = 'https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxx/edit#gid=xxxxxxxxx';
var spreadSheet = SpreadsheetApp.openByUrl(url);
var allSheets = spreadSheet.getSheets();
var theSheet = allSheets[1];
var lastRow = theSheet.getLastRow();
var lastColumn = theSheet.getLastColumn();
var sheetData = theSheet.getSheetValues(1, 1, lastRow, lastColumn);

var rawData = sheetData[1][1];
var calcData = sheetData[1][1] / sheetData[0][1];
var formattedData = Utilities.formatString("%+1.2f%", calcData * 100);

结果formattedData看起来像:

+12.1%

我认为如果它以不同的颜色显示会更好,绿色字母表示正面,红色字母表示负面。

相关案例:.setNumberFormat 在 Google Apps 脚本中不起作用

标签: javascriptgoogle-apps-script

解决方案


在您的脚本中,formattedData是字符串值。当您要更改字体颜色时,在这种情况下,需要将值设置为单元格。所以在这种情况下,我想提出改变单元格中字体颜色的方法。

如果theSheet在您的脚本中使用,示例脚本如下。

示例脚本:

var calcData = -0.1234;
theSheet
  .getRange("A1")
  .setValue(calcData)
  .setNumberFormat('+0.00%;-0.00%;0.00')
  .setFontColor(calcData > 0 ? "green" : "red");
  • 在这个示例脚本中,-12.34%被放入单元格“A1”,字体颜色为红色。

  • 使用时var calcData = 0.1234;+12.34%放入单元格“A1”,字体颜色为绿色。

  • 当您想使用Utilities.formatString时,示例脚本如下。

      var calcData = -0.1234;
      var formattedData = Utilities.formatString("%+1.2f%", calcData * 100);
      theSheet
        .getRange("A1")
        .setValue(formattedData)
        .setFontColor(calcData > 0 ? "green" : "red");
    

笔记:

  • 这是一个简单的示例脚本。所以请根据您的实际情况进行修改。

参考:


推荐阅读