Ответ 1
Отладчик, вероятно, не лжет вам - если вы запустите эту функцию в отладчике, у нее не будет параметров, переданных ей. Однако не стоит беспокоиться, вам просто нужно убедиться, что вы получаете значения для отладки. Посмотрите, как я могу проверить функцию триггера в 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 могут иметь именованные параметры, все аргументы передаются как объект типа Array, называемый 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. Строки имеют котировки.
Пользовательская функция никогда не получает диапазон в качестве аргумента; когда вы предоставляете параметр диапазона в электронной таблице, его содержимое собирается в одномерный или двумерный массив, а массив является аргументом.