Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google脚本停止运行,因为没有传递的参数_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript Google脚本停止运行,因为没有传递的参数

Javascript Google脚本停止运行,因为没有传递的参数,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个功能,我已经在谷歌表单中使用了很长时间,它工作得很好。在我创建了一个新的工作表文档并添加了这个函数之后,它停止了工作。我一直在试图弄清楚谷歌在他们的API中做了哪些改变,但没有成功。这是我的职责: /** * Sums a cell across all sheets * * @param {string} cell The cell (i.e. "B2") * @return number * @customfunction */ function sumAllShee

我有一个功能,我已经在谷歌表单中使用了很长时间,它工作得很好。在我创建了一个新的工作表文档并添加了这个函数之后,它停止了工作。我一直在试图弄清楚谷歌在他们的API中做了哪些改变,但没有成功。这是我的职责:

/**
 * Sums a cell across all sheets
 * 
 * @param {string} cell The cell (i.e. "B2")
 * @return number
 * @customfunction 
 */
function sumAllSheets(cell) 
{

  var sum = 0;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet().getName();
  var sheets = ss.getSheets();

  for (var i=1; i < sheets.length; i++) {
    var sheet = sheets[i];
    var sheetName = sheet.getName();
    var sheetRange = sheet.getRange(cell);
    sum += parseInt(sheetRange.getValue());
  }

  return sum;
}
/**
*对所有工作表中的单元格求和
* 
*@param{string}单元格单元格(即“B2”)
*@返回号码
*@customfunction
*/
功能汇总表(单元格)
{
var总和=0;
var ss=SpreadsheetApp.getActiveSpreadsheet();
var activeSheet=ss.getActiveSheet().getName();
var sheets=ss.getSheets();
对于(变量i=1;i

is的基本功能是遍历所有工作表,并将单个单元格(即所有工作表中的单元格
B2
)的值相加。在以前的版本中,我能够通过调用so
=sumAllSheets(“B2”)
之类的函数,将参数
cell
作为字符串传递。这很管用。但是,在新的更新中,
单元格
参数为
未定义
。你知道什么地方出了问题或者已经改变了吗?我在谷歌文档中找不到任何东西。

你是否将第一张表从总数中排除?否则,在循环的第一个语句中,“i”应该设置为0。还可以尝试代码的这种变体

function sumAllSheets(cell) {

var sum = 0;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (var i = 0; i < sheets.length; i++) {
    var v = sheets[i].getRange(cell)
        .getValue();
    sum += parseInt(v ? v : 0);
}

return sum;
}

是的,我不包括第一页,因为那是我显示摘要的地方。但你的密码实际上给了我问题的答案。出于某种未知的原因,当我删除函数上方的注释(更具体地说,这一行是“*@customfunction”)时,一切又开始正常工作了。可悲的是,我在这个“无问题”上浪费了4个小时。。。谢谢你的帮助!
function sumCellOnAllSheets(cell) {
return SpreadsheetApp.getActive()
    .getSheets()
    .map(function (sh) {
        return Number(sh.getRange(cell)
            .getValue())
    })
    .reduce(function (a, b) {
        return a + b;
    })
}