繁体   English   中英

从 JSON 收集数据比在电子表格中循环更快的方法

Faster way to collect data from JSON than looping in spreadsheet

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在学习 Javascript,这是我第一次使用 Google Sheets Apps Script。 我正在做的是获取一个大型 JSON 文件并将其导入我的工作表中。 之后,我根据 JSON 中的键:值填充数百个属性。

这就是它现在的工作方式:

  1. Go 到我工作表的第一列和第一行。
  2. 获取名称(属性名称)。
  3. 在 JSON 中搜索键,然后获取值。
  4. 使用 JSON 中的值更新相邻单元格。

现在一切正常,唯一的问题是它似乎很慢。 每次查找大约需要 5-1 秒,当我有 200 多个属性时,它看起来很慢。 这可能只是一个限制,也可能是我的逻辑。

我的工作表可以在这里找到: https://docs.google.com/spreadsheets/d/1tt3eh1RjL_CbUIaPzj10DbocgyDC0iNRIba2B4YTGgg/edit#gid=0

我的 function 什么都做:

function parse() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange(2,1);

  var range1 = sheet.getRange("A2");
  var cell = range.getCell(1, 1);

  var event_line = cell.getValue();
  
  var tmp = event_line.split(". ");

  var col_number = tmp[0];
  var event_name = tmp[1];

  event_json = get_json_from_cell(col_number);

  const obj = JSON.parse(event_json);
  var traits = obj.context.traits;
  var properties = obj.properties;



  //Get the range for the section where properties are

  var traits_range = sheet.getRange("contextTraits");
  var allprop = sheet.getRange("testAll");

  var alllen = allprop.getNumRows();

  var length = traits_range.getNumRows();
  
  for (var i = 1; i < length; i++) {
    var cell = traits_range.getCell(i, 1);
    var req = traits_range.getCell(i, 4).getValue();
    var trait = cell.getValue();
    var result = traits[trait];
    var result_cell = traits_range.getCell(i, 3);

    if (result == undefined) {
      if (req == "y"){
        result = "MISSING REQ";
        result_cell.setBackground("red");
      } else {
        result = "MISSING";
        result_cell.setBackground("green");
      }
    } else {
      result_cell.setBackground("blue");
    }
    result_cell.setValue(result);
    Logger.log(result);    
  }

  for (var i = 1; i < alllen; i++) {
    var cell = allprop.getCell(i,1);
    var req = allprop.getCell(i, 4).getValue();
    var prop = cell.getValue();
    var result = properties[prop];
    var result_cell = allprop.getCell(i, 3);

    if (result == undefined) {
      if (req == "y"){
        result = "MISSING REQ";
        result_cell.setBackground("red");
      } else {
        result = "MISSING";
        result_cell.setBackground("green");
      }
    } else {
      result_cell.setBackground("blue");
    }
    result_cell.setValue(result);
  }
  Logger.log(result);


}
问题暂未有回复.您可以查看右边的相关问题.
1 比循环查找数据更快或更更好的方法?

我有一个类似于以下类的Person类的对象数组,首先将thisRate设置为None : 我将21K Person对象加载到数组中, name未排序。 然后,我从文件中的数据中加载了另一个数组,该文件包含thisRate数据, thisRate约13K, name也未排序: ...

3 是否有比dataWithContentsOfURL更快的提取JSON数据的方法?

我正在构建一个需要JSON数据的应用程序。 我正在使用对RESTful API的get调用,并使用和NSJSONSerialization来遍历数据。 为了减少启动时间,我记录了完成所有步骤所需的时间。 在围绕此代码放入以下日志语句之后,我注意到此单个调用平均平均需要5秒钟才能完成。 有 ...

4 遍历电子表格以收集以xxx_bb开头的数据

我对以下任务感到困惑。 最终,我想在电子表格中找到某些数据。 这不是问题,我可以找到一个定义的值,并通过以下方法获取所需的任何信息: 但是,我并不是要找到确切的值“ Hallo”,而是要找到以“ Hallo_xxx”开头的任何值。 我尝试使用ie indexOf,但是我不确定自己在 ...

5 有没有比循环 numpy 数组更快的方法?

如果我有两个 numpy 值数组; 我怎样才能快速制作第三个数组,它给了我在前两个数组中具有相同两个值的次数? 例如: 现在,我正在执行以下循环(速度非常慢): 然后我可以绘制 xIndex、yIndex 和 z 的等高线图(或热图,或其他)。 但我知道我不是在用“Pythonic”的方式 ...

6 有没有比遍历文档段落更快的方法?

完全新手。 我使用 Pandoc 创建了一个 Word 文档,但阿拉伯语 output 需要一些修改。 通过在线文档和帖子抓取,我得到了以下代码: 我的问题: 正则表达式是避免重复的唯一方法,因为所有必需的 styles 都以“AR”结尾? 除了遍历所有段落之外,还有更快的方法吗? ...

8 有没有比使用谷歌应用脚本的 getValues() function 从谷歌电子表格获取值更快的方法?

我正在使用 Google Apps 脚本创建一些脚本,以帮助我在具有数千行的 Google 电子表格上进行一些工作。 对于数据 - 我需要 select 一整列,对其进行一些计算,然后将其添加到另一个电子表格中。 问题是对getValues() function 的每次调用都执行得非常慢。 有时完 ...

9 从foreach获取JSON数组的值是否有更快的方法?

我有一个像这样的JSON数组: 现在我做foreach每$location ,以获得相应的数据。 问题是,数组可能非常大,有几千个项目,所以做一个foreach是非常耗费资源的,可能会减慢速度。 获取每个相应的值是否还有“直接”和资源密集程度较低的方法? ...

2018-12-28 15:25:53 6 93   php/ json
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM