Я написал функцию, которая имеет один параметр - updateBool
. Функция получает существующее значение вызывающей ячейки. Если updatebool
да, случайное число генерируется и возвращается как новое значение вызывающей ячейки. Если updateBool
нет (т. Е. Не требуется обновление), тогда он возвращает исходное значение ячейки.Возвращение числа через функцию
Функция выполняется правильно, когда updateBool
есть. Однако, когда это не так, возвращается результат: «Ошибка: результат не был числом».
Я изменил функцию, поэтому я могу запустить ее в режиме отладки - кажется, что она выполнена правильно в этом режиме, как да, так и нет, поскольку параметры работают. Но как только я прохожу через updateBool
в качестве параметра (посредством ссылки на другую ячейку), это ошибки.
function testFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var writeSheet = ss.getSheetByName('Data');
//for debug execution only
var callingRow = 4;
var callingColumn = '4';
updateBool = 'no'
//for when calling as function from spreadsheet
//callingRow = writeSheet.getActiveCell().getRow();
//callingColumn = writeSheet.getActiveCell().getColumn();
var callingCellRef = writeSheet.getRange(callingRow, callingColumn)
callingCellValue = Number(callingCellRef.getValue());
Logger.log('Calling Cell row: %s column: %s', callingRow, callingColumn);
Logger.log('Calling Cell Value: %s', callingCellValue);
if (updateBool == 'no') {
//DONT do any updates
Logger.log('UpdateBool is no, no update');
return callingCellValue;
}
else {
// do updates
var randomVariable = Math.random();
Logger.log('UpdateBool is yes, update to: %s', randomVariable);
return randomVariable;
}
}
Фактическое использование случай является более сложным, чем это (я прохожу через несколько параметров и с использованием тех запросов к базе данных), но это логика, что я не могу работать. Благодаря!
Функция определение должно быть 'функция функции теста (updateBool) {', верно? И скажем, что 'a1'' 7.77'. И тогда, когда вы устанавливаете 'a1' to' = testFunction («something») ',' a1' больше не '7.77', а становится формулой (' string'). Поэтому в функции, поскольку 'a1' является строкой, ее нельзя преобразовать в число. –
Я предлагаю вам отделить данные от результатов обновления. –
Не могли бы вы поделиться кодом, как вы получаете значение updateBool? Функция работает правильно, когда значение «да», потому что это логика по умолчанию в вашей функции. Я считаю, что проблема заключается в том, как/какое значение вы передаете в updateBool, то есть вы не ссылаетесь на ячейку, которую вы считаете собой, или на то, как вы получаете это значение. (Лучше всего предположить, что я могу придумать ограниченный код, я тоже мог бы ошибиться в своих предположениях :)) –