繁体   English   中英

使用 Google Apps 脚本从 JSON object 创建 Google 表格

[英]Create Google Sheet from JSON object using Google Apps Script

JSON 示例:

[
   [
      SERV1,
      {
         "QOS Script Version=Not Installed",
         Host_Name=ABC,
         IP Address=123.123.123.123,
         Free Space=244Gi,
         Time Ran=Sat Nov 31 07:26:02 +08 2020,
         Backup Location= VOL03,
         Date of Last Backup=2020-26-28-031839,
         Last Reboot Time=          Nov 18 02:00:13 2020,
         Total Storage=1.8Ti,
         OS Version=10.15.6
      }
   ],
   [
      DATASTORE,
      {
         "QOS Script Version=Not Installed",
         Date of Last Backup=2020-11-28-031520,
         Free Space=34Gi,
         IP Address=123.123.123.12,
         OS Version=10.15.6,
         Total Storage=1.8Ti,
         Backup Location= VOL03,
         Time Ran=Sat Nov 15 07:23:48 +08 2020,
         Host_Name=ABC,
         Last Reboot Time=          Nov 28 02:04:21 2020
      }
   ]
]

我需要以这种格式将其转储到谷歌表中:

+-----------+-----------------+------------+-----------------+------+
| Server    | Backup Location | Free Space | IP Address      | etc. |
+-----------+-----------------+------------+-----------------+------+
| SERV1     | VOL03           | 244Gi      | 123.123.123.123 |      |
+-----------+-----------------+------------+-----------------+------+
| DATASTORE | VOL01           | 1.8Ti      | 123.123.123.124 |      |
+-----------+-----------------+------------+-----------------+------+
| etc.      |                 |            |                 |      |
+-----------+-----------------+------------+-----------------+------+

其中列标题的顺序可以调整,列表按服务器的字母顺序排列。 我尝试使用此答案中的代码,但收到错误“无法读取未定义的属性'reduce'”: Parse Nested Json Data to Google Sheets with App Script

json 是使用此 Firebase 库生成的: https://sites.google.com/site/scriptsexamples/new-connectors-to-readbase-services-database/firebase/from-google-services-database/ -应用程序脚本

var object = Object.entries(FirebaseApp.getDatabaseByUrl(url, optSecret).getData());

数据在“QOS 脚本版本”键周围有额外的空格和引号,它们可以保留在谷歌表中,但理想情况下会被删除。 这最终将从原始 firebase 源中删除,但我目前需要谷歌表转储,但无法弄清楚如何以这种方式格式化它。 感谢您提供任何帮助。

我设法一次写入一个单元格的值。 欢迎任何有关代码改进的建议。

  // write column headers
  var object = Object.entries(data);
  var headers = [['Host_Name', 'Backup Location', 'Free Space', 'Total Storage', 'IP Address', 'Last Reboot Time', 'OS Version', 'QOS Script Version']];
  // getRange(start row, start column, number of rows, number of columns)
  sheet.getRange(1, 1, 1, headers[0].length).setValues(headers);
  var current_row = 2;
  for (const [server_key, serverData_value] of Object.entries(data)) {
    // write serverData (values)
    server_data = Object.entries(serverData_value)
    for (var i = 0; i < headers[0].length; i++){
      sheet.getRange(current_row, i+1, 1, 1).setValue(serverData_value[headers[0][i]]);
    }
    current_row++;
  }

暂无
暂无

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

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