![](/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.