使用 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) );
    }
}