Google Apps脚本 - 百分比格式和数组

时间:2013-05-05 13:27:51

标签: google-apps-script google-sheets

我对以下事情感到困惑。

我在谷歌电子表格上有数据,我正在拉入数组。我正在对数据进行一些修改,然后将其重新放回电子表格中。我的数字在电子表格中的格式如下:00.00%当它们进入数组时,它们的格式就像这样0.0,当我把它们放回到电子表格中时,它们被分成00.00%格式,它们被除以100.那么什么开始了当我把数据放回去时,20.00%变为0.20%。

所以,我认为在将它们放回到纸张上之前,我将所有数值乘以100,这看起来应该是不必要的步骤。

我的问题是,我是否可以采用不同的方式处理数组中的数据,或者将每个值乘以100我的唯一选择?

1 个答案:

答案 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));
}