【问题标题】:Convert data from table to table将数据从表转换为表
【发布时间】:2020-01-29 17:51:31
【问题描述】:

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

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

  }



}

【问题讨论】:

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


    【解决方案1】:

    您正在迭代但没有使用迭代器变量 i,对吗?也许以一种更易读的方式编写代码,首先获取行,然后是每列的单元格值,然后遍历行和列,这会使其更具可读性,并让您更快地找到问题。

    【讨论】:

    • 我会尝试,直到有人给我正确的方向,谢谢
    • 您在 for 循环中使用了 i。那是怎么回事?那你为什么需要一个循环呢?
    【解决方案2】:

    您确定您的var cellCurrency 是您想要的正确范围吗? 从您的屏幕截图中,右侧的单元格显示为“E10”...但我们假设您已修复该问题。

    那么您的数组尺寸有问题,您的var cellsPrice 是一个二维数组(行、列),即使您从中获取值的范围只有一行!

    另一个问题,你的var cellsTraget* 也是一个二维范围,所以你不能使用setValue()...你可以使用setValues() 但是值数组必须匹配范围的维度.就目前而言,它们不匹配。 提示:如果你想使用上述功能,请转置它们

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

    这里是一些示例工作代码:

    function sendButton() {
      
      // Activate the spreadsheet
      var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var baseCurrency = "USD";
      
      // Fetching the data from the API
      var res = UrlFetchApp.fetch("https://api.exchangeratesapi.io/latest?base="+baseCurrency).getContentText();
      
      // Parsing data to JSON
      var json = JSON.parse(res);
      
      // Exporting data in variables
      var USD = [json['rates']['USD'], json['rates']['CAD'], json['rates']['GBP'], json['rates']['EUR']];
      
      // I will do it for one row
      var articlePrice = spreadsheet.getRange('E5').getValue();
      
      // Mind the array's dimensions!
      var convertedPricesRange = spreadsheet.getRange('I5:L5');
      var convertedPriceValues = [[articlePrice*USD[0],articlePrice*USD[1],articlePrice*USD[2],articlePrice*USD[3]]];
      
      // Set converted values
      convertedPricesRange.setValues(convertedPriceValues);
    }
    

    延伸阅读:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多