0

我一直在尝试从 URL 获取 JSON 文件的可读数据库。

我在 Github 上使用了 fastfedora 的脚本https://github.com/fastfedora/google-docs/blob/master/scripts/ImportJSON/Code.gs将 JSON 从 URL 导入到表格。我正在使用基本的:

=TRANSPOSE(ImportJSON("https://rsbuddy.com/exchange/summary.json"))

我使用了转置,因为使用两个长列而不是两个长行更容易。

然而,导入的数据非常混乱:https ://docs.google.com/spreadsheets/d/1mKnRQmshbi1YFG9HHg7-mKlZZzpgDME6-eGjDJKzbRY/edit?usp=sharing 。它基本上是一长列描述性数据(名称、id、价格等)和另一列变量(商品的实际名称和数字价格)。

是否可以操作生成的表格页面,以便第一列中的公因子可以与两个初始列旁边的伪表对齐?例如,对于第一个项目,ID 将是“2”,名称将是“Cannonball”,Sp 将是“5”等。

提前致谢。请原谅我的无知。

4

2 回答 2

1

例子

简单的公式

我认为,获取ID的更快方法:

=QUERY(QUERY(A2:B,"select B where A <> '' offset 4"),"skipping 7")

如果你想要Names

=QUERY(QUERY(A2:B,"select B where A <> '' offset 1"),"skipping 7")
  • 当您将偏移量从 0 更改为 6 时,您会得到不同的列输出。

  • 7是数据中的列数。

结果是带有数据的自动完成列。


硬公式

也可以用一个公式得到整个结果:

  1. 粘贴=COUNTA(A:A)在单元格中E2
  2. 粘贴7E3这是数据中的列数
  3. =E2/E3E4

然后在单元格G2或右侧某处粘贴公式:

=ArrayFormula(vlookup(if(COLUMN(OFFSET(A1,,,1,E3)),    
(row(OFFSET(A1,,,E4))-1)*E3+COLUMN(OFFSET(A1,,,1,E3))),    
{row(OFFSET(A1,,,E2)),OFFSET(B2,,,E2)},2,0))

它运行缓慢,但提供了整张桌子。


还是脚本?

我也尝试过使用脚本 UDF 函数。下面是测试公式:

=ConvertTo2D(TRANSPOSE(R3:R16),7)

其中 R3:R16 是小范围,被分成 7 列的表。脚本很短:

function ConvertTo2D(Arr, index) {

   var newArr = [];
   while(Arr[0].length) newArr.push(Arr[0].splice(0,index));

   return newArr; 

}

听起来不错。但!这是非常缓慢的。所以这个解决方案只适用于快速测试。

于 2016-03-18T12:55:41.163 回答
0

如果数据是结构化的并且每个对象将始终具有相同的结构,则可以使用简单的偏移量来执行此操作:

=OFFSET($B$2,
        (ROW($B2) - 2) * 7 +
         COLUMN(D$1) - 4, 
        0)

将其放入 D2 并向右和向下拖动。可以以这种方式立即返回数据,但为此您需要干预脚本。

于 2016-03-18T10:55:22.457 回答