格式化绝对值的脚本不起作用

Cri*_*rdi 2 google-sheets google-apps-script

我有一个带有脚本的 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'));
 }
Run Code Online (Sandbox Code Playgroud)

Ger*_*rdo 5

该函数setNumberFormat()需要一个字符串,其格式与您希望显示的值的格式相同。例如,如果您将其'0.000'作为格式放置,则单元格中的值将类似于1 -> 1.00034 -> 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);    
 }
Run Code Online (Sandbox Code Playgroud)

如果这对您不起作用,请告诉我。