包含百分比值

时间:2018-02-04 16:01:26

标签: javascript google-apps-script google-sheets

我是google appscript的新手,我遇到了一个问题,我现在已经找不到解决方案了。

使用appscript,我试图做一个累积值的当前格式为%格式(使用.setNumberFormat(“0.00%;(0.00)%”))。见下面的截图:

how the output should look like

  1. col E:具有计算值(使用appscript;使用 .setNumberFormat(“0.00%;(0.00)%”))
  2. col F:这就是我需要使用appscript实现的输出
  3. col G:我已经展示了我想要在col F中实现的计算是什么,只是为了确保我不是   混乱
  4. 我目前拥有的代码 `

    function TTMrankAnalysis() {
    
    var ss = SpreadsheetApp.getActiveSpreadsheet();
        var yourNewSheet = ss.getSheetByName("TTM Rank Analysis");
        var lr = yourNewSheet.getLastRow();
        var lc = yourNewSheet.getLastColumn();
    
        var cogsTotal = ss.getSheetByName("TTM_Report_Paste").getRange(6, 2).getValue(); //total COGS
          Logger.log(cogsTotal);
    
        var cogsValuesRange = yourNewSheet.getRange(2,3,lr-1).getValues(); //cogs range
          Logger.log(cogsValuesRange);
    
            for(var i=0; i<cogsValuesRange.length; i++){
    
              var d = cogsValuesRange[i];
              var percentCogs = d/cogsTotal
              Logger.log(percentCogs);
    
              var cogsPasteRange = yourNewSheet.getRange(i+2, lc-1)
              var cogsPercentagePaste = cogsPasteRange.setValue(percentCogs); //sets %cogs from high to low
              cogsPercentagePaste.setNumberFormat("0.00%;(0.00)%");
             };
    
            yourNewSheet.getRange(2,3,lr-1).setNumberFormat("$#,##0.00;$(#,##0.00)"); //sets $$$ symbol for shipped cogs
    
            //for cumulative % of COGS
          var cogsPercentageValues = yourNewSheet.getRange(2, lc-1, lr-1).getValues();  
          Logger.log(cogsPercentageValues);
    
            var sum = 0;
            for (var i=0;i<cogsPercentageValues.length; i++) {
    
             sum+=cogsPercentageValues[i];
            Logger.log(sum);
    
            var cumulativeCogsPasteRange = yourNewSheet.getRange(i+2, lc)
              var cumulativeCogsPercentagePaste = cumulativeCogsPasteRange.setValue(percentCogs); //sets %cogs from high to low
    
            };
    } 
    

    请注意,我已经包含了用于实现Col E中存在的值的代码,只是为了确保流程没有被破坏。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

function sumEF() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getRange('E1:F5');
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++){
    if(i==0){
      vA[i][1]=vA[i][0];
    }else{
      vA[i][1]=vA[i-1][1]+vA[i][0];
    }
  }
  rg.setValues(vA);
}