【问题标题】:Send data from an API to google spreadsheet将数据从 API 发送到谷歌电子表格
【发布时间】:2020-01-29 21:34:33
【问题描述】:

我在一个项目中工作,该项目通过在线 API(Web 服务)将一些数据转换为另一个表,因此计划从 API 获取数据并将价格转换为另一个表,但我仍然再次遇到相同的错误再一次,这不是按我需要的方式转换每一行。
截图:UI FOR THE SPREADSHEET
代码:

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]);

  }



}

【问题讨论】:

  • 如果 Logger.log(CRN[3]); 会发生什么

标签: javascript google-apps-script spreadsheet google-sheets-api


【解决方案1】:

试试下面的脚本代码:

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);
};

你也可以使用函数GOOGLEFINANCE得到类似的结果,试试:

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

【讨论】:

    猜你喜欢
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2023-03-07
    • 1970-01-01
    • 2019-05-08
    相关资源
    最近更新 更多