这是一个众所周知的错误:
问题 472:对于百分比格式的单元格,setValue(s) 失败。
访问并star它,也许它会得到更多关注。
如果您从百分比格式的单元格中读取和写入值,则必须重新计算百分比值。
此函数使用范围的格式值将*= 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));
}