.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
是数字。当这些是字符串时,percent1
是 NaN
.
- 并且,
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%');
参考文献:
我的 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
是数字。当这些是字符串时,percent1
是NaN
. - 并且,
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%');