Как объединить массив из переменной, которая была отображена из вызова API - PullRequest
1 голос
/ 12 октября 2019

Я пытаюсь вернуть результат извлечения API URLFetchApp в Google App Script обратно в Google Sheets с помощью sheet.getRange (). SetValues ​​(). Я могу заполнить отдельные ячейки из переменной одним значением, используя версию 'setValue ()', однако я застрял при попытке заполнить несколько ячеек из массива.

Если я 'log (arr)', моя переменная выглядитнравится,[19-10-12 15: 17: 45: 538 BST] [99][19-10-12 15: 17: 45: 669 BST] [98,9][19-10-12 15: 17: 45: 829 BST] [91][19-10-12 15: 17: 45: 970 BST] [96,4][19-10-12 15: 17: 46: 298 BST] [91,6][19-10-12 15: 17: 46: 441 BST] [110,6][19-10-12 15: 17: 46: 600 BST] [93,7][19-10-12 15: 17: 46: 762 BST] [93,8][19-10-12 15: 17: 46: 903 BST] [92,6]

Я думаю, что так должно быть[99,98.9,91,96.4,91.6,110.6,93.7,93.8,92.6]

Существует множество подробных руководств по использованию функции concat () для объединения переменных в один массив, но я не могу найти какую-либо информациюкак бороться с неправильным способом, которым я это отобразил.

Результатом является ошибка TypeError: Невозможно прочитать свойство "length" из неопределенного. что должно быть из-за моего неправильно отформатированного массива.

Любая помощь очень ценится чувствовать себя как правильный картофель в мес.

    var records = results.map(function (positions){

    var position = positions.Metrics.Position;

    var arr = [];

    arr.push(position);

sheet.getRange(6,3,arr.length,arr[0].length).setValues(arr);

    Logger.log(arr)

1 Ответ

1 голос
/ 12 октября 2019

Я вижу, что вы перебираете результаты и записываете диапазон для каждой записи. Допустим, ваша позиция 99.

var position = positions.Metrics.Position; // === 99
var arr = []; //new empty array
arr.push(position;  // === [99], array with the length of 1.

Затем вы переходите к 3-му ряду 3-го ряда и пытаетесь построить диапазон, который охватывает arr.length строк вниз (помните, длина arr.length равна1) и arr [0] .length столбцы справа. Однако arr [0] равно 99, а 99 не имеет свойства 'length' (оно не определено!).

sheet.getRange(6,3,arr.length,arr[0].length).setValues(arr);

Вот код, который может решить вашу проблему:

//returns a 2D array where every inner array entry correspons to a row of data
var records = results.map(function(positions){
       return [positions.Metrics.Position];
 });

 sheet.getRange(6,3, records.length, records[0].length).setValues(records);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...