javascript - 如何通过 Google 脚本获取每个单独列的单独总和?

标签 javascript google-apps-script google-sheets

enter image description here

我想获取范围内每个单独列的数值总和。我做错了什么?

  function countNutrients(){
  
  var sh = SpreadsheetApp.getActiveSheet();
  var lastcol = sh.getLastColumn(); //Get last column
  var lastcolval = sh.getRange(1, 1, 1, lastcol).getValues();
  var lastrowval = sh.getRange("C1:C").getValues(); //Trick to get last row
  var lastrow = lastrowval.filter(String).length;   //
  var sumvalues = sh.getRange(2, 14, lastrow, lastcol).getValues();
    (typeof sumvalues === 'number' ? "" : sumvalues);
    Logger.log(sumvalues);
    for (var j = 13; j < lastcolval.length ; j++) {
       var sumcolumnval = sh.getRange(2, [j], lastrow);
       var sum = 0;
       for (var i in sumcolumnval[0]) {
       var sum = sumvalues[0][i] + sum;
     }
     return sum
     Logger.log(sum);
  }
  return sumcolumnval
  
}

屏幕截图上的列以及其他 65 列

enter link description here

CSV 示例

最佳答案

带有脚本的列总和

function sumOfCols() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet14');
  var hA=sh.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
  var sum={};
  hA.forEach(function(h,i){sum[h]=0;});
  var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
  var v=rg.getValues();
  v.forEach(function(r,i){r.forEach(function(c,j){sum[hA[j]]+=c;});});
  var html='';
  hA.forEach(function(h,i){html+=Utilities.formatString('<br />%s(sum): %s',h,sum[h]);});
  var ui=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(ui, "Column Sums")
}

电子表格:

enter image description here

输出对话框:

enter image description here

数据(csv):

COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8,COL9,COL10
1,2,3,4,5,6,7,8,9,10
2,3,4,5,6,7,8,9,10,11
3,4,5,6,7,8,9,10,11,12
4,5,6,7,8,9,10,11,12,13
5,6,7,8,9,10,11,12,13,14
6,7,8,9,10,11,12,13,14,15
7,8,9,10,11,12,13,14,15,16

适用于您的特定应用程序的函数

这将仅对您选择的六列进行求和

function countNutrients(){
  var sh=SpreadsheetApp.getActiveSheet();
  var hA=sh.getRange(1,14,1,6).getValues()[0];
  var sum={};
  hA.forEach(function(h,i){sum[h]=0;})
  var vA=sh.getRange(2,14,sh.getLastRow()-1,6).getValues();
  vA.forEach(function(r,i){
    r.forEach(function(c,j){
      if(!isNaN(c)) {
        sum[hA[j]]+=c;
      }
    });
  });
  var html="";
  var keys=Object.keys(sum);
  keys.forEach(function(k,i){
    html+=Utilities.formatString('<br />sum[%s]=%s',k,sum[k]);
  })
  var ui=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(ui,'Sums of Cols N through S')
}

关于javascript - 如何通过 Google 脚本获取每个单独列的单独总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60348799/

相关文章:

javascript - 难以重定向到 404 页面

javascript - Google MailApp html 选项出现问题

javascript - setBackGroundRGB 不接受字符串

google-sheets - 在 ARRAY_LITERAL 中,Array Literal 缺少一行或多行的值 - 谷歌电子表格中的间接公式错误

google-apps-script - Google App Script 未经验证的应用程序供自己使用和开发

javascript - GoogleSpreadsheet 不是构造函数错误

javascript - 如何让 div 始终用紧随其后的内容填充视口(viewport)(完全响应)?

javascript - 可以使用 JavaScript 捕获窗口/选项卡关闭吗?

javascript - 第一个选项未显示在选择字段中

google-apps-script - 动态编辑表单下拉列表创建额外的列