我编写了一个自定义Google Apps脚本,该脚本将从API的数组2中提取一些数据(宽2列,长50-100行,但有所不同),将其解析为JSON,然后粘贴到Google工作表中
我可以从编辑器运行脚本,它可以正常运行。但是,当我尝试从自定义菜单运行它或运行调试器时,出现以下错误:
'无法找到方法getRange(number,number,(class),number)(第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);
}