[英]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.