Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据从一个表转换到另一个表_Javascript_Google Apps Script_Google Sheets_Spreadsheet_Google Sheets Api - Fatal编程技术网

Javascript 将数据从一个表转换到另一个表

Javascript 将数据从一个表转换到另一个表,javascript,google-apps-script,google-sheets,spreadsheet,google-sheets-api,Javascript,Google Apps Script,Google Sheets,Spreadsheet,Google Sheets Api,我在一个项目中工作,该项目通过一个在线API(web服务)将一些数据转换为另一个表,因此计划从API中获取数据并将价格转换为另一个表,但我仍然一次又一次地遇到相同的错误,即没有按我需要的方式转换每一行。 屏幕截图: 代码: 函数发送按钮(){ //激活电子表格 var电子表格=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var cellCurrency=spreadsheet.getRange('E9').getValues()

我在一个项目中工作,该项目通过一个在线API(web服务)将一些数据转换为另一个表,因此计划从API中获取数据并将价格转换为另一个表,但我仍然一次又一次地遇到相同的错误,即没有按我需要的方式转换每一行。
屏幕截图:
代码:

函数发送按钮(){
//激活电子表格
var电子表格=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cellCurrency=spreadsheet.getRange('E9').getValues();
//从API中提取数据
var res=UrlFetchApp.fetch(“https://api.exchangeratesapi.io/latest?base=“+cellCurrency).getContentText();
//将数据解析为JSON
var json=json.parse(res);
//导出变量中的数据
var USD=json['rates']['USD'],
CAD=json['rates']['CAD'],
GBP=json['rates']['GBP'],
欧元=json['rates']['EUR'];
//一个数组只能获取4种货币
var CRN=[美元、加元、英镑、欧元];
var cellsPrice=spreadsheet.getRange('E5:E8').getValues();
//第二个货币表中的目标单元格
var cellsTraget1=电子表格.getRange('H3:K3');
var cellsTraget2=电子表格.getRange('H4:K4');
var cellsTraget3=电子表格.getRange('H5:K5');
var cellsTraget4=电子表格.getRange('H6:K6');
//转化过程

对于(var i=0;i您正在迭代,但没有使用迭代器变量i,对吗?也许以更可读的方式编写代码,首先获取行,然后获取每列的单元格值,然后对行和列进行迭代,会使代码更可读,并使您更快地发现问题。

您是否绝对确定ur
var cellCurrency
是您想要的正确范围吗? 从您的屏幕截图来看,正确的单元格似乎是“E10”…但假设您已修复该问题

然后,您的数组维度出现问题,
var cellsPrice
是一个二维数组(行、列),即使从中获取值的范围只有一行

另一个问题是,您的
var cellsTraget*
也是一个2D范围,因此您不能使用…您可以使用,但数组中的值必须与范围的维度匹配。而且,由于它们当前不匹配。提示:如果要使用上述函数,请将它们转置

除此之外,您的for循环毫无意义,因为您无论如何都没有循环

以下是一些示例工作代码:
函数sendButton(){
//激活电子表格
var电子表格=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var baseCurrency=“美元”;
//从API获取数据
var res=UrlFetchApp.fetch(“https://api.exchangeratesapi.io/latest?base=“+baseCurrency).getContentText();
//将数据解析为JSON
var json=json.parse(res);
//导出变量中的数据
var USD=[json['rates']['USD']、json['rates']['CAD']、json['rates']['GBP']、json['rates']['EUR'];
//我要做一排
var articlePrice=电子表格.getRange('E5').getValue();
//注意阵列的尺寸!
var convertedPricesRange=spreadsheet.getRange('I5:L5');
var convertedPriceValues=[[articlePrice*USD[0],articlePrice*USD[1],articlePrice*USD[2],articlePrice*USD[3]];
//设置转换值
convertedPricesRange.setValues(ConvertedPricesValues);
}
进一步阅读:
  • 床单类

我会尝试,直到somone给我正确的方向,谢谢你在for循环中使用
I
的任何方法。怎么了?那你为什么需要循环?
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]);

  }



}