我对脚本还很陌生。我正在尝试建立一个谷歌工作簿来整理谷歌表单中的条目。每个月,表单中的条目都会转到工作簿中的新工作表中。工作簿中的最后一个工作表总计了所有之前的工作表。
但是,由于工作表的数量无法固定,我无法编写引用所有先前工作表的求和函数。
我现在想要构建一个简单的函数,对所有现有工作表中同一单元格的值进行求和。
我可以控制新工作表的名称,因此所有新工作表的名称将是 SMM1、SMM2、SMM3 等。
- 每次执行都会给出“未找到范围”
- 在工作表中,使用单元格名称调用此函数会产生奇怪的数字。例如:
=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/