Я создаю пользовательскую функцию в Sheets, которая берет серийный номер устройства и возвращает информацию о гарантии из API производителя.Если я вызываю функцию для одного серийного номера, я получаю ожидаемый результат в смежных ячейках электронной таблицы, но когда я вызываю ее в диапазоне, содержащем серийные номера, я получаю пустую ячейку обратно.
Я создалвторая тестовая функция, использующая setValues()
вместо заполнения данных, и она отлично работает:
var result = GET_WARRANTY(SpreadsheetApp.getActive().getActiveSheet().getRange("Warranty Details!H3:H9").getValues());
SpreadsheetApp.getActive().getActiveSheet().getRange("Warranty Details!I3:L9").setValues(result)
Для справки, здесь приводится содержимое переменной result
(новые строки добавлены для удобства чтения).Использование typeof()
показывает, что все данные рассматриваются как строки в скрипте приложений.
[[[EXTENDED], [2016-06-12], [2018-06-11], [latitude-e5450-laptop]],
[[INITIAL], [2016-08-03], [2017-11-01], [chromebook-11-3120]],
[[INITIAL], [2017-03-26], [2018-03-26], [chromebook-13-3380-laptop]],
[[INITIAL], [2016-08-03], [2017-11-01], [chromebook-11-3120]],
[[INITIAL], [2016-08-03], [2017-11-01], [chromebook-11-3120]],
[[INITIAL], [2016-08-03], [2017-11-01], [chromebook-11-3120]],
[[INITIAL], [2016-08-03], [2017-11-01], [chromebook-11-3120]]]
Конец моей пользовательской функции:
//mutliple inputs
results.push([[warrantyType],[warrantyStart],[warrantyEnd],[model]]);
//single input
var results = [warrantyType,warrantyStart,warrantyEnd,model];
return results;
, где warrantyType
, warrantyStart
, warrantyEnd
и model
- все строки, проанализированные из ответа API JSON.
Я не нашел ничего, объясняющего поведение функции return results;
, объясняющей, почему одни и те же данные не ведут себяодинаково между двумя процессами.