2015-12-02 2 views
2

У меня есть лист Google со сценарием, который форматирует некоторые столбцы для валюты. Но в последнее время мне пришлось изменить сценарий так, чтобы он менял значения для абсолютных значений, а также начал добавлять отрицательные значения, которые мешают функциям, в которых они используются. Я попробовал следующий скрипт, но никаких изменений в значениях не было, они остаются отрицательными. Что я делаю не так?Сценарий для форматирования по абсолютной величине не работает

function onEdit(){ 
    var Spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = Spreadsheet.getSheets()[0]; 
    var Range = sheet.getRange('audit!f:q'); 
    Range.clearFormat(); 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var cell = sheet.getRange('audit!f:q'); 
    cell.setNumberFormat(Math.abs('audit!f:q')); 
} 

ответ

2

Функция setNumberFormat() нуждается в строке формата, который вы хотите, чтобы ваши значения, которые будут отображаться. Например, если вы поставите '0.000' как формат, значение в клетках будут выглядеть 1 -> 1.000, 34 -> 34.000 и т.д. , Чтобы удалить это форматирование, для этой форматирования используйте функцию clearFormat().

Math.abs() будет использоваться для изменения фактического значения переменной и, следовательно, это не формат.

Так что в этом случае вам нужно будет сориентироваться со значениями в диапазоне и использовать функцию Math.abs() на каждом из них, чтобы получить то, что вам нужно.

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

function onEdit(){ 
    var Spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = Spreadsheet.getSheets()[0]; 
    var Range = sheet.getRange('Sheet1!a:b');  
    var cell = Range.getValues(); 
    Range.clearFormat(); 
    for(var row in cell) 
    { 
     for(var col in cell[row]) 
     { 
     cell[row][col] = Math.abs(cell[row][col]); 
     } 
    }  
    Range.setValues(cell);  
} 

Сообщите мне, если это не поможет вам.

+0

работает отлично. большое спасибо! :) –

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