簡體   English   中英

Google腳本停止運行,因為沒有傳遞的參數

[英]Google Script stops running because there are no passed arguments

我有一個功能,我已經在Google表格中使用了很長時間了,它工作得很好。 創建新的圖紙文檔並添加功能后,它停止工作。 我一直試圖找出谷歌的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;
}

基本上,它要做的是遍歷所有工作表並對來自單個單元格(即,所有工作表中的單元格B2 )的值求和。 在以前的版本中,我可以通過調用=sumAllSheets("B2")這樣的函數將參數cell作為字符串傳遞。 這工作得很好。 但是,對於新的更新, cell參數是undefined 任何想法出什么問題或已更改? 我在Google文檔中找不到任何內容。

您要從總數中排除第一張紙嗎? 如果不是,則應在循環的第一條語句中將“ 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;
}

這是替代版本

function sumCellOnAllSheets(cell) {
return SpreadsheetApp.getActive()
    .getSheets()
    .map(function (sh) {
        return Number(sh.getRange(cell)
            .getValue())
    })
    .reduce(function (a, b) {
        return a + b;
    })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM