Google apps script 如何从未指定数量的图纸中获取值
我有一个电子表格,可能有任何数量的表在任何给定的时间。这些“侧页”具有总附加值,并放置在指定的单元格中。我们会说这个总数在每个侧页的单元格“A1”中。我想合计所有这些侧页总计,并将总计放在另一张表的单元格中 我已经编写了一个解决方案,我认为应该可以工作,但它永远显示“加载”。我肯定有更简单的方法,我就是看不出来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
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;
}