簡體   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