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

getRange(cell) not working in google app script

本文关键字:应用程序 脚本 不起作用 谷歌 单元格 getRange      更新时间:2023-09-26

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

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

我现在想构建一个简单的函数,将所有现有工作表中同一单元格的值相加。

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

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

代码示例:

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;
  }

我在这里找到了一个类似的问题,它也可能对你有所帮助。