使用 Google SpreadsheetApp setNumberFormat,将格式设置为百分比而不是乘以 100?
Using Google SpreadsheetApp setNumberFormat, setting format as percent and not multiplying by 100?
我正在使用 API 从 Google 分析数据构建一个 Google 电子表格,我正在尝试格式化一些数字。
基于Sheets API Format page,我应该可以使用.setNumberFormat("00.00\%");
将数字设置为小数点后两位,并用斜线清除%
,这样它就不会运行它是数字的乘数。但它没有按预期工作。根据该页面,\
字符 "Treats the next character as a literal value and not any special meaning it might have."
原始数据:33.0923537840302
目标:33.09%
实际结果:3309.23%
如果我使用 .setNumberFormat("00.00");
我会得到我想要的结果,但最后缺少 %
。
你可以试试这个:
cell.setNumberFormat("00.00");
cell.setValue(cell.getValue() + "%")
首先,您将格式设置为“00.00”,然后将百分号连接到格式结果。
希望这个变通办法能有所帮助。
对于最终出现在这里的任何人,要以 range
的形式执行此操作(而不是像 @Mr.Rebot 的回答那样通过单元格),您需要从单元格中收集所有值范围,然后遍历该数据并设置单元格的更新值。
我正在研究这个 example,所以这就是 outputToSpreadsheet
的来源。
function outputToSpreadsheet(results) {
/*
Collect all the values of the cells
*/
var resultsLength = results.getRows().length,
getPercentNewSessionsData = sheet.getRange(2, 11, resultsLength).getValues(),
getBounceRateData = sheet.getRange(2, 13, resultsLength).getValues(),
getPageViewsData = sheet.getRange(2, 14, resultsLength).getValues(),
getAverageSessionDurationData = sheet.getRange(2, 15, resultsLength).getValues();
/*
Using the results count (resultsLength), run down the rows and manipulate all the cell values
*/
for(var i = 0; i < resultsLength; i++){
sheet.getRange(i+2, 11).setValue( (getPercentNewSessionsData[i] * 1).toFixed(2) + "%");
sheet.getRange(i+2, 13).setValue( (getBounceRateData[i] * 1).toFixed(2) + "%");
sheet.getRange(i+2, 14).setValue( (getPageViewsData[i] * 1).toFixed(2));
sheet.getRange(i+2, 15).setValue( convertToDuration(getAverageSessionDurationData[i] * 1) );
}
}
我正在使用 API 从 Google 分析数据构建一个 Google 电子表格,我正在尝试格式化一些数字。
基于Sheets API Format page,我应该可以使用.setNumberFormat("00.00\%");
将数字设置为小数点后两位,并用斜线清除%
,这样它就不会运行它是数字的乘数。但它没有按预期工作。根据该页面,\
字符 "Treats the next character as a literal value and not any special meaning it might have."
原始数据:33.0923537840302
目标:33.09%
实际结果:3309.23%
如果我使用 .setNumberFormat("00.00");
我会得到我想要的结果,但最后缺少 %
。
你可以试试这个:
cell.setNumberFormat("00.00");
cell.setValue(cell.getValue() + "%")
首先,您将格式设置为“00.00”,然后将百分号连接到格式结果。
希望这个变通办法能有所帮助。
对于最终出现在这里的任何人,要以 range
的形式执行此操作(而不是像 @Mr.Rebot 的回答那样通过单元格),您需要从单元格中收集所有值范围,然后遍历该数据并设置单元格的更新值。
我正在研究这个 example,所以这就是 outputToSpreadsheet
的来源。
function outputToSpreadsheet(results) {
/*
Collect all the values of the cells
*/
var resultsLength = results.getRows().length,
getPercentNewSessionsData = sheet.getRange(2, 11, resultsLength).getValues(),
getBounceRateData = sheet.getRange(2, 13, resultsLength).getValues(),
getPageViewsData = sheet.getRange(2, 14, resultsLength).getValues(),
getAverageSessionDurationData = sheet.getRange(2, 15, resultsLength).getValues();
/*
Using the results count (resultsLength), run down the rows and manipulate all the cell values
*/
for(var i = 0; i < resultsLength; i++){
sheet.getRange(i+2, 11).setValue( (getPercentNewSessionsData[i] * 1).toFixed(2) + "%");
sheet.getRange(i+2, 13).setValue( (getBounceRateData[i] * 1).toFixed(2) + "%");
sheet.getRange(i+2, 14).setValue( (getPageViewsData[i] * 1).toFixed(2));
sheet.getRange(i+2, 15).setValue( convertToDuration(getAverageSessionDurationData[i] * 1) );
}
}