.setNumberFormat 在 Google Apps 脚本中不起作用

.setNumberFormat is not working in Google Apps Script

我的 Google Apps 脚本中有以下代码,它从我的 Google 电子表格中获取数据,第 15 行(最后一行)returns 错误提示 TypeError: percent1.setNumberFormats is not a function (line 15, file "Code").我应该更改什么来解决这个问题?

我想做的是,我想以百分比格式显示 dod1,如 0.00%

function notifySlack(message) {

  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 ymd = Utilities.formatDate(sheetData[44][0], 'Asia/Tokyo', 'yyyy-MM-dd');
  
  var data1 = sheetData[44][1];
  var percent1 = sheetData[44][1] / sheetData[43][1];
  var dod1 = percent1.setNumberFormat('0.00%');
}

修改点:

  • 在您的脚本中,当 sheetData[44][1]sheetData[43][1] 的值是数字时, var percent1 = sheetData[44][1] / sheetData[43][1];percent1 是数字。当这些是字符串时,percent1NaN.
  • 并且,setNumberFormat是Class Class范围的方法。 Ref

由于这些情况,您的脚本出现错误。这就是你的问题的原因。不幸的是,从你的脚本中,我无法理解你的目标的细节。所以在这个答案中,我想为你的目标提出 2 种模式。

模式 1:

在这个模式中,var percent1 = sheetData[44][1] / sheetData[43][1];percent1的值被修改为0.00%。在这种情况下,dod1 的值变成一个字符串。

从:
var dod1 = percent1.setNumberFormat('0.00%');
到:
var dod1 = Utilities.formatString("%1.2f%", percent1 * 100);

模式二:

在这个模式中,解释了setNumberFormat的使用方法。当你想修改活动sheet中单元格“A1”的数字格式时,可以使用下面的脚本。在这种情况下,单元格“A1”的值可以用作数字。

var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A1");
range.setNumberFormat('0.00%');

参考文献: