调试器可能不会对您撒谎——如果您在调试器中启动该函数,它将没有传递给它的参数。不过不用担心,您只需要确保获得用于调试的值。看看如何在 GAS 中测试触发功能?,它演示了可应用于自定义函数的技术。
您需要为参数提供(或从电子表格中检索)值,而不是定义要传递给函数的事件。
function test_drivingDistance() {
// Define a set of test values
var testSet = [[ 'Washington, DC', 'Seattle, WA' ],
[ 'Ottawa, ON', 'Orlando, FL'],
[ 'Paris, France', 'Dakar, Senegal']];
// Run multiple tests
for (var test in testSet) {
Logger.log('Test ' + test + ' = ' + drivingDistance(testSet[test][0],testSet[test][1]));
}
// Get parameters from sheet
var TestFromSheet = drivingDistance(ss.getRange('A1').getValue(),ss.getRange('A2').getValue());
}
你明白了。您仍然可以在函数内设置断点,或用于debugger
暂停执行。
编辑 - 检查参数
从电子表格调用时,自定义函数接收哪些参数?
你可以做些什么来调试它是有限的,因为当从表格调用时,调试器不能用于检查你的自定义函数,并且自定义函数的安全限制会阻止日志记录。了解一般的论点传递可能就足够了。虽然 javascript 函数可能具有命名参数,但所有参数都作为类似数组的对象传递,称为arguments
. 此自定义函数将返回一个报告接收到的参数的数组。从电子表格调用时,每个参数将出现在其自己的单元格中,从您输入函数的单元格开始:
function testArguments( ) {
var argArray = [];
for (var arg in arguments) {
argArray.push("arguments[" + arg + "] = " + JSON.stringify(arguments[arg]))
}
return argArray;
}
在 javascript 中,实际上并没有像 int 或 float 这样的类型——只有 Number。这些参数将不带引号显示,看起来像数字。日期作为 Date 对象到达,但以这种方式打印时显示为 Date-y 字符串。字符串有引号。
自定义函数从不接收范围作为参数;当您在电子表格中提供范围参数时,其内容被收集到一维或二维数组中,该数组就是参数。