简体   繁体   English

将数据从 API 发送到谷歌电子表格

[英]Send data from an API to google spreadsheet

I was working in a project which is converting some data to another table by an online API (web service), so the plan is fetching data from the API and converting the prices to another table, I still got the same error again and again which is not convert each row as the way I need.我在一个项目中工作,该项目通过在线 API(Web 服务)将一些数据转换为另一个表,因此计划从 API 获取数据并将价格转换为另一个表,但我仍然一次又一次地遇到相同的错误不是按照我需要的方式转换每一行。
SCREENSHOT : UI FOR THE SPREADSHEET屏幕截图:电子表格的 UI
CODE :代码 :

function Send_Button() {

  //activate the spreadsheet
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cellCurrency = spreadsheet.getRange('E9').getValues();

  //fatching the data from the API
  var res = UrlFetchApp.fetch("https://api.exchangeratesapi.io/latest?base="+cellCurrency).getContentText();

  //parsing data to JSON
  var json = JSON.parse(res);

  //exporting data in variables
  var USD=json['rates']['USD'],
      CAD=json['rates']['CAD'],
      GBP=json['rates']['GBP'],
      EUR=json['rates']['EUR'];

  //an array to fetch just 4 currencies
  var CRN = [USD,CAD,GBP,EUR];
  var cellsPrice = spreadsheet.getRange('E5:E8').getValues();

  //targeted cell in the second currencies table
    var cellsTraget1 = spreadsheet.getRange('H3:K3');
    var cellsTraget2 = spreadsheet.getRange('H4:K4');
    var cellsTraget3 = spreadsheet.getRange('H5:K5');
    var cellsTraget4 = spreadsheet.getRange('H6:K6');

//converting process
  for(var i=0;i<4;i++)
  {

    cellsTraget1.setValue(cellsPrice[0]*CRN[0]);
    cellsTraget2.setValue(cellsPrice[1]*CRN[1]);
    cellsTraget3.setValue(cellsPrice[2]*CRN[2]);
    cellsTraget4.setValue(cellsPrice[3]*CRN[3]);

  }



}

Try the following script code:尝试以下脚本代码:

function Send_Button() {

  //activate the spreadsheet
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cellCurrency = spreadsheet.getRange('E10').getValue();

  //fatching the data from the API
  var res = UrlFetchApp.fetch("https://api.exchangeratesapi.io/latest?base="+cellCurrency).getContentText();

  //parsing data to JSON
  var json = JSON.parse(res);

  //exporting data in variables
  var USD=json['rates']['USD'],
      CAD=json['rates']['CAD'],
      GBP=json['rates']['GBP'],
      EUR=json['rates']['EUR'];

  //an array to fetch just 4 currencies
  var CRN = [USD,CAD,GBP,EUR];
  var cellsPrice = spreadsheet.getRange('E5:E8').getValues();

  //targeted cell in the second currencies table
  var targetRange = spreadsheet.getRange('H3:K6');
  var targetValues = targetRange.getValues();

  //converting process
  for(var i=0;i<cellsPrice.length;i++) {
    for(var j=0;j<CRN.length;j++) {
      targetValues[i][j] = cellsPrice[i][0]*CRN[j];
    }
  }

  targetRange.setValues(targetValues);
};

You can also get the similar result using function GOOGLEFINANCE , try:您也可以使用函数GOOGLEFINANCE获得类似的结果,请尝试:

=mmult(E5:E8,{googlefinance("USDEUR"),googlefinance("USDCAD"),googlefinance("USDGBP")})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM