【问题标题】:Google Apps Script to Output a JSON Array into a row将 JSON 数组输出到一行的 Google Apps 脚本
【发布时间】:2017-05-08 04:12:38
【问题描述】:

我在将 javascript 数组写入 Google 表格行的最后一步时遇到问题。

我意识到我的 setValues() 方法需要一个 2D 数组,但我遗漏了一些明显的东西,我不确定是什么。

我正在处理这个 JSON 响应,我想将 rates[] 数组写入 Google 表格中的单行。

{
    "base": "CAD",
    "date": "2017-05-05",
    "rates": {
        "AUD": 0.98264,
        "CNY": 5.0123,
        "GBP": 0.56122,
        "HKD": 5.652,
    }
}

我的谷歌应用程序脚本的最后一部分如下:

sheet.getRange(sheet.getLastRow(),1).setValues([rates]);

这给出了错误:

无法将 Array 转换为 Object[][]。 (第 52 行,文件“代码”)

然后我嵌入了另一组括号,因为我认为这是我转换为二维数组时的错误:

sheet.getRange(sheet.getLastRow(),1).setValues([[rates]]);

但后来我将数组全部放入一个单元格中。所以我转换为二维数组是错误的。

谁能发现我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    使用您提供的信息,可以从以下代码创建从对象创建二维数组的代码:

    function converObjectToArray() {
      var innerArray,k,k2,obj,objRates,outerArray;
    
      obj = {
        "base": "CAD",
        "date": "2017-05-05",
        "rates": {
            "AUD": 0.98264,
            "CNY": 5.0123,
            "GBP": 0.56122,
            "HKD": 5.652,
        }
      }
    
      objRates = obj.rates;
    
      outerArray = [];
    
      for (k in obj) {
    
        if (k !== 'rates') {continue;}
    
        objRates = obj[k];
        Logger.log('obj.rates ' + JSON.stringify(obj.rates))
    
        innerArray = [];//reset
    
        for (k2 in objRates) {
          innerArray.push(objRates[k2]);
        }
    
        outerArray.push(innerArray);
      }
    
      Logger.log(outerArray)
    }
    

    【讨论】:

      【解决方案2】:

      您必须从对象创建一个数组,然后使用设置值将数组写入电子表格,如下所示:

      function addObject(){
       var obj = {
          "base": "CAD",
          "date": "2017-05-05",
          "rates": {
              "AUD": 0.98264,
              "CNY": 5.0123,
              "GBP": 0.56122,
              "HKD": 5.652,
          }
      }
      var inputArray = []
      var rates = obj.rates
      for (var j in rates){
        inputArray.push([j,rates[j]])
      }
      Logger.log(inputArray)
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName('your Sheet Name');
      sheet.getRange(sheet.getLastRow()+1, 1,inputArray.length,inputArray[0].length).setValues(inputArray)
      
      }
      

      此代码还将在工作表中输入 key 的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-21
        • 2018-02-16
        • 1970-01-01
        • 1970-01-01
        • 2020-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多