使用Google SpreadsheetApp setNumberFormat,将格式设置为百分比而不是乘以100?

时间:2017-03-28 15:01:48

标签: google-spreadsheet-api google-docs-api google-sheets-api

我正在使用API​​从Google Analytics数据构建Google电子表格,我正在尝试格式化一些数字。
基于Sheets API Format page,我应该可以使用.setNumberFormat("00.00\%");将数字设置为两位小数,并使用斜杠清除%,以便它不会在其上运行它的乘数数。但它没有按预期工作。根据该页面,\字符“将下一个字符视为字面值,而不是任何特殊含义。”

RAW DATA:33.0923537840302
目标:33.09%
实际结果:3309.23%

如果我使用.setNumberFormat("00.00");,我会得到我想要的结果,但最后却没有%

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

cell.setNumberFormat("00.00");
cell.setValue(cell.getValue() + "%")

首先,您要将格式设置为" 00.00"然后将百分号连接到格式结果。

enter image description here

希望这种解决方法有所帮助。

答案 1 :(得分:1)

对于任何到此为止的人来说,要做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) );
    }
}