我对以下事情感到困惑。
我在谷歌电子表格上有数据,我正在拉入数组。我正在对数据进行一些修改,然后将其重新放回电子表格中。我的数字在电子表格中的格式如下:00.00%当它们进入数组时,它们的格式就像这样0.0,当我把它们放回到电子表格中时,它们被分成00.00%格式,它们被除以100.那么什么开始了当我把数据放回去时,20.00%变为0.20%。
所以,我认为在将它们放回到纸张上之前,我将所有数值乘以100,这看起来应该是不必要的步骤。
我的问题是,我是否可以采用不同的方式处理数组中的数据,或者将每个值乘以100我的唯一选择?
答案 0 :(得分:3)
这是一个早已为人所知的错误:
Issue 472:对于格式化百分比的单元格,setValue(s)失败。
访问并加注其中,也许会得到更多关注。
如果您正在从百分比格式的单元格中读取和写入值,则必须重新计算百分比值。
此函数使用范围的格式值对任何百分比的单元格应用*= 100
操作:
/**
* Adjusts the values for elements in values array if the
* corresponding format element is a percentage.
* Value array is changed in place, as well as returned.
*/
function percentAdjust(values,formats) {
for (var row = 0; row < values.length; row++) {
for (var col = 0; col < values[0].length; col++) {
if (formats[row][col].indexOf('%') !== -1) {
// Adjust any percent formatted values
values[row][col] *= 100;
}
}
}
return( values );
};
function test () {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var values = rows.getValues();
var formats = rows.getNumberFormats();
rows.setValues(percentAdjust(values,formats));
}