2013-05-05 2 views
0

Я озадачен следующим.Скрипт Google Apps - процентное форматирование и массивы

У меня есть данные в электронной таблице google, которые я втягиваю в массив. Я делаю некоторые изменения в данных, а затем помещаю их обратно в электронную таблицу. Мои номера отформатированы таким образом в электронной таблице: 00.00% Когда они попадают в массив, они отформатированы так, как это 0.0, и когда я помещаю их обратно в таблицу в формат 00.00%, они делятся на 100. Так что началось поскольку 20.00% становится 0.20%, когда я возвращаю данные.

Итак, я думал, что умножу все числовые значения на 100, прежде чем я их верну на лист, который, похоже, должен быть ненужным шагом.

Мой вопрос заключается в том, могу ли я делать что-то по-другому с тем, как я передаю данные в массиве, или умножает каждое значение на 100 мой единственный вариант здесь?

ответ

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)); 
} 
+0

благодарности - это избранные. Я просто тестировал, если столбец был числом до того, как я умножился на 100, но мне нравится ваш метод проверки того, является ли формат процентным. – brl8

Смежные вопросы