1
我在谷歌表格中定義瞭如下自定義函數:調試谷歌表自定義功能
/**
* Finds the maximum value in one column
* by comparing cells matched in another column,
* using a comma-delimited lookup in a cell.
*
* @param {string} references Comma-delimited string referencing values.
* @param {array} keys Array of strings to match.
* @param {array} values Array of values to compare.
* @return The maximum value of all referenced values.
* @customfunction
*/
function MAX_LOOKUP(references,keys,values){
if (!references || !keys || !values) return "";
var refs = {};
references.split(/, ?/).forEach(function(key){ refs[key]=1 });
var val,max = -Infinity;
for (var i=keys.length;i--;){
if (refs[keys[i]] && (val=values[i])>max) max=val;
}
return max>-Infinity ? max : "";
}
在電子表格中使用的類似=MAX_LOOKUP(G9,A:A,I:I)
始終 - 這會返回一個空字符串。當我在腳本編輯器進行測試,但是,它工作正常:
function test_MAX_LOOKUP(){
var result = MAX_LOOKUP(
"foo, bar, baz",
["no", "bar", "no", "baz", "foo", "no"],
[ 99, 42, 99, 17, 1, 99 ]
);
Logger.log(result); // Is correctly 42
}
顯然有我從電子表格和我的測試獲得值之間的差一些,但我如何找出是什麼問題?如果我在函數中設置了斷點,它只會在從腳本編輯器調試時發生。如果我在函數中調用Logger.log
調用,則只有在從腳本編輯器運行時才記錄它們。
我怎樣才能看到什麼值被傳遞給我的函數功能?