Google apps script 如何从未指定数量的图纸中获取值

Google apps script 如何从未指定数量的图纸中获取值,google-apps-script,google-sheets,custom-function,Google Apps Script,Google Sheets,Custom Function,我有一个电子表格,可能有任何数量的表在任何给定的时间。这些“侧页”具有总附加值,并放置在指定的单元格中。我们会说这个总数在每个侧页的单元格“A1”中。我想合计所有这些侧页总计,并将总计放在另一张表的单元格中 我已经编写了一个解决方案,我认为应该可以工作,但它永远显示“加载”。我肯定有更简单的方法,我就是看不出来 function GETSIDESHEETTOTALS(){ var totalCell = "A1" var total = 0; var cur_ss = Spreads

我有一个电子表格,可能有任何数量的表在任何给定的时间。这些“侧页”具有总附加值,并放置在指定的单元格中。我们会说这个总数在每个侧页的单元格“A1”中。我想合计所有这些侧页总计,并将总计放在另一张表的单元格中

我已经编写了一个解决方案,我认为应该可以工作,但它永远显示“加载”。我肯定有更简单的方法,我就是看不出来

function GETSIDESHEETTOTALS(){
  var totalCell = "A1"
  var total = 0;
  var cur_ss = SpreadsheetApp.getActive();
  cur_ss.getSheets().forEach(function(sheet){
    total += sheet.getRange(totalCell).getValue();
  });
  return total;
}
我希望每个工作表中的总数相加,并显示在我在主工作表中指定的单元格中。我已将函数
“=GETSIDESHEETTOTALS()”
放入电子表格主页上的一个单元格中。如果可能的话,我希望它是一个名为function的单元格


是否有人有其他解决方案,或者可以告诉我我做错了什么?

对于那些熟悉Excel的人,可以将其改为“如何使用Google App Script使用3D单元格引用求和?”

简单地看一下你的表,你不排除你在表上汇总的总数。也许是递归地将这些值相加

我从零开始的快速示例:

function sum3D(cellRef) {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  var cumTotal = 0;
  for (var i=0;i<sheets.length;i++){
    if (sheets[i].getIndex()!==1){ // specifically omit the first sheet
      cumTotal += sheets[i].getRange(cellRef).getValue();
    }
  }
  return cumTotal;
}
并实现为,例如,
“=sum(get3d('A1'))”

编辑 代码中一些不必要分离的部分已合并(但总体功能保持不变)

编辑2
关于如何指定聚合器工作表,有明显的改进。例如,您只需在公式中传入工作表名称,并根据返回值“sheets[i].getName()”忽略该名称即可

谢谢!这正是我需要的!它似乎正在按照我现在期望的方式工作。
  function get3D(cellRef) {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  var arr = [];
  for (var i=0;i<sheets.length;i++){
    if (sheets[i].getIndex()!==1){
      arr.push( sheets[i].getRange(cellRef).getValue());
    }
  }
  return arr;
}