Ошибка скрипта приложения - не удается найти метод getRange (число, число, (класс), число) - PullRequest
0 голосов
/ 20 февраля 2019

Я написал собственный скрипт 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...