将 JSON 制成表格

Tabulate JSON into Sheets

我一直在尝试从 URL.

中获取 JSON 文件的可读数据库

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

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

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

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

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

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

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

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

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

Example

简单公式

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

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

如果你想要 姓名:

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

  • 7是数据中的列数。

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


硬公式

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

  1. 在单元格 E2
  2. 中粘贴 =COUNTA(A:A)
  3. E3中粘贴7,这是Data
  4. 中的列数
  5. =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))

它运行缓慢,但给出了整个table。


或脚本?

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

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

其中 R3:R16 是一个小范围,它被分成 table 7 列。脚本很短:

function ConvertTo2D(Arr, index) {

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

   return newArr; 

}

听起来不错。但!它非常慢。所以此解决方案仅适用于快速测试。