迭代数组中的API调用(GAS/Javascript)

迭代数组中的API调用(GAS/Javascript),javascript,arrays,loops,google-apps-script,google-sheets,Javascript,Arrays,Loops,Google Apps Script,Google Sheets,我对JS和GAS还是很陌生。我有一个API调用,从gov.uk API系统获取某些数据。我已经到了可以调用一个变量(在本例中是一个VRM)并从中获取我需要的某些数据部分的地步,但我想添加另一个版本,在其中我可以放入一个VRM的批量列表,并返回一个部分(一个日期),并将该日期添加到该VRM旁边。我尝试在数组中添加for循环来循环VRM,我也尝试在for循环中添加此代码,但没有成功 这是我的代码(由于明显的原因,隐藏的键和链接);如有任何建议,我们将不胜感激 function motapi(reg)

我对JS和GAS还是很陌生。我有一个API调用,从gov.uk API系统获取某些数据。我已经到了可以调用一个变量(在本例中是一个VRM)并从中获取我需要的某些数据部分的地步,但我想添加另一个版本,在其中我可以放入一个VRM的批量列表,并返回一个部分(一个日期),并将该日期添加到该VRM旁边。我尝试在数组中添加for循环来循环VRM,我也尝试在for循环中添加此代码,但没有成功

这是我的代码(由于明显的原因,隐藏的键和链接);如有任何建议,我们将不胜感激

function motapi(reg) {

 // Clear Sheet before running
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var destSheet = ss.getSheetByName("regList");
  var clearPrevious = destSheet.getRange('B2:B').clearContent(); 
  var lastRow = destSheet.getLastRow();

  //call api
  var vrm = SpreadsheetApp.getActiveSheet().getRange(2,1).getValue();
    var keyoptions = {
      method : "GET",
      headers : {
    "Accept": "application/json+v6",
    "x-api-key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
      }
  };
  var url = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' + vrm;
  var response = UrlFetchApp.fetch(url, keyoptions);
  var prompt = vrm + " | API call complete";

 // Logger.log(response)

  //parse response
  // var json = JSON.parse(response);
  var json = response.getContentText();
  var data = JSON.parse(json);

  Logger.clear();
 // Logger.log(data);
  // log seperate parts of json parse

 // Logger.log(data[0]["motTests"]);
 Logger.log(data[0].motTests[0].expiryDate);

  var dataSet = data[0].motTests //[0].expiryDate;


 // Log expiry dates

  var rows = [],
    data;
  for (i = 0; i < dataSet.length; i++) {
    data = dataSet[i];
    rows.push([data.expiryDate]); //your JSON entities here
  };

 // Logger.log(rows);

// return api call variables to function
  return {
      motdata: json,


};
}

function goodWay() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('regList');
var rangeData = sheet.getDataRange();
var lastColumn = rangeData.getLastColumn();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange(1,1, lastRow-1, lastColumn-1);
var motApi = motapi();

  // Get array of values in the search Range
  var rangeValues = searchRange.getValues();
  Logger.log(rangeValues);
  // Loop through array and if condition met, add relevant
  // background color.
  for ( i = 0; i < lastColumn - 1; i++){
    for ( j = 0 ; j < lastRow - 1; j++){
      if(rangeValues[j][i] === "-"){
        sheet.getRange(j+1,i+2).push(motApi);
      }else if (rangeValues[j][i] === 0){
        sheet.getRange(j+2,i+2).setValue();
      }; 
    };
  };

}
函数motapi(reg){
//运行前清除纸张
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var destSheet=ss.getSheetByName(“regList”);
var clearPrevious=destSheet.getRange('B2:B').clearContent();
var lastRow=destSheet.getLastRow();
//调用api
var vrm=SpreadsheetApp.getActiveSheet().getRange(2,1).getValue();
var键选项={
方法:“获取”,
标题:{
“接受”:“应用程序/json+v6”,
“x-api-key”:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”
}
};
变量url='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'+vrm;
var response=UrlFetchApp.fetch(url,keyoptions);
var prompt=vrm+“| API调用完成”;
//Logger.log(响应)
//解析响应
//var json=json.parse(响应);
var json=response.getContentText();
var data=JSON.parse(JSON);
Logger.clear();
//Logger.log(数据);
//json解析的日志分离部分
//Logger.log(数据[0][“motTests”]);
Logger.log(数据[0].motTests[0].expiryDate);
var数据集=数据[0]。motTests/[0]。过期日期;
//日志过期日期
变量行=[],
数据;
对于(i=0;i
也许是这样的?请考虑添加您试图运行的代码(带有for循环的代码),并描述您使用它的确切问题,这样我们可以更好地了解您的情况并给予您更好的支持。Cheers@ChrisG-感谢您的帮助,此行返回语法错误?“const rows=data.map(d=>d.expiryDate);”@carlesgg97-我用我试图作为一个单独函数运行循环的代码进行了编辑,它返回顶行的一个到期日期,但不将其粘贴到工作表(regList)中,并将所有行包括标题在内的数组中。我明白了,可能不支持箭头函数。将
d=>d.expiryDate
替换为
函数(d){return d.expiryDate;}
,其他两个相同。