javascript - 将数据从 API 发送到谷歌电子表格
问题描述
我在一个项目中工作,该项目通过在线 API(Web 服务)将一些数据转换为另一个表,因此该计划是从 API 获取数据并将价格转换为另一个表,但我仍然一次又一次地遇到相同的错误不是按照我需要的方式转换每一行。
屏幕截图:电子表格
代码的 UI :
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]);
}
}
解决方案
试试下面的脚本代码:
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")})
推荐阅读
- asp.net-core - 通过需要一段时间传播的图表来解决 Azure B2C AD 声明更新的方法?
- python - 如何为以下 json 定义 json 模式?
- javascript - 如何显示从firebase检索到的数据到标题标签
- typescript - 如果未定义,则连接数组
- .net - 可以在 Mac 上使用旧版 .NET 框架代码库吗?
- express - Socket.io - 有没有办法保存 socketid 以防止生成新的
- sql-server-2012 - 如何通过 Spark DataFrame 使用 Databricks 使用 Service Principle 将批量数据插入 Sql Server 数据仓库
- opengl - 顺序无关的透明度 - 内存屏障
- c# - 如何使用文本框获取列表视图的选定项目
- devexpress-wpf - 如何在 GridControl 中显示所有继承的接口