Я написал собственный скрипт Google Apps, который будет извлекать некоторые данные (шириной 2 столбца, длиной 50-100 строк, но это не так) в массиве 2 из API, анализировать его в JSON и затем вставлять в лист Google..
Я могу запустить скрипт из редактора, и он работает нормально.Но когда я пытаюсь запустить его из пользовательского меню или когда я запускаю отладчик, я получаю следующую ошибку:
'Не удается найти метод getRange (число, число, (класс), число) (строка 43)'
Строка 43 - последняя строка кода.
sheet.getRange(3,1,dataSet.length,2).setValues(rows);
Кажется, проблема в том, что getRange не может использовать переменную длины набора данных (количество строк)установить количество строк для использования в диапазоне, в который должны быть вставлены данные.
Я не могу понять, как это исправить - может кто-нибудь еще увидит, что я делаю неправильно?Спасибо, что заглянули.
//custom menu
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('XXXX Data')
.addItem('Credit Limits','CREDITLIMITS')
.addToUi();
}
function CREDITLIMITS() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); //get active spreadsheet
var sheet = ss.getActiveSheet();
// var sheet = ss.getSheetByName('data'); //get sheet by name from active spreadsheet
// URL and params for the API
var USERNAME = 'XXXXXXX';
var PASSWORD = 'XXXXXXXXXXXXX';
var url = 'https://api.XXXX.com/api/v1/XXX/?where=type=%27XXXXXXX%27'; // var url="http://example.com/feeds?type=json"; // Paste your JSON URL here
var authHeader = 'Basic ' + Utilities.base64Encode(USERNAME + ':' + PASSWORD);
var params = {'method': 'GET','muteHttpExceptions': true,'headers': {'Authorization': authHeader,} };
//call the XXXX API
var response = UrlFetchApp.fetch(url, params); // get api endpoint
var json = response.getContentText(); // get the response content as text
var dataAll = JSON.parse(json); //parse text into json
var dataSet = dataAll;
//create empty array to hold data points
var rows=[],
data;
//loop over the retrun events
for (i=0; i < dataSet.length; i++) {
data = dataSet[i];
//push a row of data as 2d array
rows.push([data.company, data.creditLimit]);
}
// clear any previous content
sheet.getRange(1,1,500,10).clearContent();
// write data to sheet
sheet.getRange(3,1,dataSet.length,2).setValues(rows);
}