Я пытаюсь автоматизировать сбор телефонных номеров из API в Google Sheet с помощью скрипта приложения. Я могу получить данные и поместить их в массив со следующим кодом:
const options = {
method: 'GET',
headers: {
Authorization: 'Bearer XXXXXXXXXXXXXXX',
Accept: 'Application/JSON',
}
};
var serviceUrl = "dummyurl.com/?params";
var data=UrlFetchApp.fetch(serviceUrl, options);
if(data.getResponseCode() == 200) {
var response = JSON.parse(data.getContentText());
if (response !== null){
var keys = Object.keys(response.call).length;
var phoneArray = [];
for(i = 0; i < keys; i++) {
phoneArray.push(response.call[i].caller.caller_id);
}
Это работает, как и ожидалось, - оно получает вчерашние значения идентификатора вызывающего абонента из определенной маркетинговой кампании из моего API. Далее я хочу импортировать эти данные в столбец в моей электронной таблице. Для этого я использую метод setValues следующим образом:
Logger.log(phoneArray);
var arrayWrapper = [];
arrayWrapper.push(phoneArray);
Logger.log(arrayWrapper);
for(i = 0; i < keys; i++) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cell = sheet.getRange("A8");
cell.setValues(arrayWrapper);
}
}
}
}
Я знаю, что мне нужно, чтобы длина моего массива была равна длине выбранного диапазона ячеек на моем листе. Однако, я получаю конфликтующие ошибки в зависимости от длины, которую я установил для моего метода getRange. Если я установлю его на одну ячейку, как вы видите выше, я получу ошибку:
Количество столбцов в данных не соответствует количеству столбцов в диапазоне. У данных есть 8, но у диапазона есть 1.
Однако, если я установлю длину моего диапазона на 8 (или любое значение, кроме 1), я получу ошибку:
Количество столбцов в данных не соответствует количеству столбцов в диапазоне. У данных есть 1, но диапазон имеет 8.
Как видите, ошибка меняет значения. Теперь у меня есть соответствующее количество столбцов в диапазоне, но мой сценарий находит только 1 ячейку данных. Когда я проверяю журнал, я вижу, что мой 2D-массив выглядит нормально в обоих случаях - 8 телефонных номеров в массиве, помещенном в другой массив.
Что вызывает эту ошибку? Я не могу найти ссылку на подобные ошибки в SO или где-либо еще.
Также, пожалуйста, обратите внимание, что я знаю, что этот код немного шаткий (странные переменные и два для циклов for, которые можно было бы сделать). Я устранял это в течение пары часов и первоначально использовал setValue вместо setValues. При попытке отладки все было разбито и много перемещалось.