Пользовательская функция: возвращаемое значение отличается от setValues ​​() - PullRequest
0 голосов
/ 08 июня 2018

Я создаю пользовательскую функцию в 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;, объясняющей, почему одни и те же данные не ведут себяодинаково между двумя процессами.

1 Ответ

0 голосов
/ 08 июня 2018

Изменить 3D-массив на 2D-массив:

Попробуйте изменить значение с:

results.push([[warrantyType],[warrantyStart],[warrantyEnd],[model]]);

на

results.push([warrantyType,warrantyStart,warrantyEnd,model]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...