getRange(单元格)在谷歌应用程序脚本中不起作用

时间:2016-05-04 11:59:59

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

我对脚本相当新鲜。我正在尝试设置一个谷歌工作簿,整理谷歌表格中的条目。每个月,表单中的条目转到工作簿中的新工作表。工作簿中的最后一个工作表总计所有以前的工作表。

但是,由于无法修复工作表的数量,因此无法编写引用所有先前工作表的和函数。

我现在想要构建一个简单的函数,该函数对所有现有工作表中相同单元格的值求和。

我可以控制新工作表的名称,以便所有新工作表都是名称SMM1,SMM2,SMM3等。

  1. 每次执行都会给出"范围未找到"
  2. 在工作表中,使用单元名称调用此函数会产生奇怪的数字。例如:=totalsheets("E17")给出31,即使所有5张在E17中都有1张,这是我写的脚本
  3. 代码示例:

    function totalsheets(cell) {
    
    var sum=0,sname="";
    
    // to find total number of sheets based on fixed 2nd last sheet
    
    var number= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SMM1").getIndex();
    
    for(var i=1; i<=number; i++)
    
    {
    
      sname="SMM" + i;
    
      var s= SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sname).getRange(cell).getValue();
        sum+=s;
    
      }
    
      return sum;
    
    }
    

1 个答案:

答案 0 :(得分:1)

试试这段代码:

  function totalsheets(cell) {

    var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

    var sum = 0;

    for (var i = 0; i < sheets.length; i++) {


      var sheet = sheets[i];
      var sheetName = sheet.getName();

      if (sheetName.substring(0, 3) == 'SMM') {

        var val = sheet.getRange(cell).getValue(); 

        if (typeof(val) == 'number') {
            sum += val;   
        }

      }

  }

  return sum;

  }

我找到了similiar question here,它也可以帮到你。