javascript - getRange(cell) 在谷歌应用程序脚本中不起作用

标签 javascript google-apps-script google-sheets

我对脚本还很陌生。我正在尝试建立一个谷歌工作簿来整理谷歌表单中的条目。每个月,表单中的条目都会转到工作簿中的新工作表中。工作簿中的最后一个工作表总计了所有之前的工作表。

但是,由于工作表的数量无法固定,我无法编写引用所有先前工作表的求和函数。

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

我可以控制新工作表的名称,因此所有新工作表的名称将是 SMM1、SMM2、SMM3 等。

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

代码示例:

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;

}

最佳答案

试试这个代码:

  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 ,它也可能对你有帮助。

关于javascript - getRange(cell) 在谷歌应用程序脚本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37027174/

相关文章:

javascript - 使用无限滚动和 WP 进行触摸导航

javascript - 为什么在我调整浏览器大小时我的 div 会重叠?

google-apps-script - 通过 GAS 向自己发送电子邮件保留在 gmail 发件箱中,而不是在收件箱中

javascript - 每当有人提交表单时,尝试使用 Google 表单响应中的数据来创建 Google 表格

javascript - 如何从 &lt;script&gt; 中确定参数?

javascript - 使用 2 种不同的 body 背景颜色

javascript - 使用 JavaScript 在 Html 中动态添加单选和下拉列表并返回数据

google-apps-script - 在 Google 表格中插入新行时的默认单元格值

javascript - 编辑单元格时在选项卡之间来回移动行

google-sheets - 查询公式合并单元格