繁体   English   中英

如何使用 Google Apps 脚本从 JSON 创建数组并将值导入到 Google 表格中的多行

[英]How to Create an Array From JSON and Import the Values to Multiple Rows in a Google Sheet Using Google Apps Scripts

我正在尝试将 Google Search Console API 中的数据导入 Google 表格。 我能够以 JSON 格式检索我需要的数据,但无法弄清楚如何将其传输到工作表以填充多行。

我有以下 function 能够导入数据,但只能导入一行:

 function dataFillTest(sheet, json, regex) {
  sheet.clear();
  sheet.appendRow(["Date", "Link", "Clicks", "Category"]);

  var data = new Array();

  for (var i = 0; i < 5; i++) {
      data.push(json.rows[i].keys[0], json.rows[i].keys[1], json.rows[i].clicks);
  }
  Logger.log("Contents of data after for loop");
  Logger.log(data);
  
  var lastRow = sheet.getLastRow();
  sheet.getRange(lastRow + 1, 1, 1, 15).setValues([data]);

  var cell = sheet.getRange("D2:D");
  cell.setFormula('=REGEXEXTRACT(B2; "https://'+ regex+ '(\\w+)")');
}

这是我运行代码时工作表的样子:

在此处输入图像描述

这就是我想要实现的目标:

在此处输入图像描述

如果有帮助的话,这就是我拥有的 JSON 的结构:

{responseAggregationType=byPage, rows=[{ctr=0.2625019822003836, keys=[2021-08-26, https://mondo.rs/Magazin/Zdravlje/a1522777/Letovanje-u-Crnoj-Gori-i-stomacni-problemi.html], clicks=120842, impressions=460347}, {ctr=0.18834311984734511, keys=[2021-09-13, https://mondo.rs/Magazin/Stil/a1528560/Hrana-za-jaci-imunitet-posle-50.html], clicks=102256, impressions=542924}, {ctr=0.23844989249500642, keys=[2021-09-07, https://mondo.rs/Magazin/Zdravlje/a1527110/Novi-organ-u-ljudskom-telu.html], clicks=93712, impressions=393005}, {ctr=0.27251045096802823, keys=[2021-09-10, https://mondo.rs/Sport/Tenis/a1528706/Novak-Djokovic-zamalo-diskvalifikovan-sa-US-opena.html], clicks=93349, impressions=342552}, {ctr=0.22042795846910482, keys=[2021-11-27, https://mondo.rs/Info/Drustvo/a1561695/Za-4-godine-ustedeo-7000-evra-na-grejanju.html], clicks=87129, impressions=395272}]}

将数据写入单行的原因是因为您在数组data中推送一个列表,然后在将data数组写入工作表时将其设置为 2-d (这是您实际在做什么的示例) . 您应该将数组推送到data以使其成为二维数组。

示例代码:

var data = new Array();

  for (var i = 0; i < 5; i++) {
      data.push([json.rows[i].keys[0], json.rows[i].keys[1], json.rows[i].clicks]); 
  }
  Logger.log("Contents of data after for loop");
  Logger.log(data);
  
  var lastRow = sheet.getLastRow();
  sheet.getRange(lastRow + 1, 1, data.length, data[0].length).setValues(data); 

修改:

  • 我用[]封装了 json 数据,然后将其推送到数组data
  • 根据data数组维度修改getRange()

Output:

在此处输入图像描述

暂无
暂无

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

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