![](/img/trans.png)
[英]How to Create an Array From JSON and Import the Values to Multiple Rows in a Google Sheet Using Google Apps Scripts
[英]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.