簡體   English   中英

如何每月使用導入數據自動更新Google電子表格?

[英]How to auto-update Google Spreadsheet with import data each month?

我想將英國警方的犯罪數據存儲到我所在地區。 英國警方每個月都會向police.uk提供新數據。 這有兩種方式:1。CSV。 我的區域的犯罪是這個可以下載為CSV( 1.2. 2. JSON通過API。信息在這里 - 我還沒有解決這個問題。

問題:網頁和CSV僅顯示過去六個月的數據。 我想創建一個Google Drive電子表格,每月更新一次,以便持續添加最新數據,以便隨時保留所有數據。

我真的不知道如何解決這個問題,特別是在API方面。 我應該使用像ImportData,Google Spreadsheets的腳本編輯器這樣的標准電子表格函數,還是使用像Python這樣的編程語言,我不知道?

謝謝。

多么有趣! 我從來不知道警察有我們可以使用的數據API! 我建議使用Google Apps腳本,您可以使用它輕松導入JSON數據。

例如,要首先獲取數據,您可以使用URL提取服務,如下所示:

var data = UrlFetchApp.fetch("http://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592&date=2013-01");

這將返回原始JSON數據,供您根據自己的需要進行播放。

然后,您可以迭代對象,將它們添加到數組中以添加到電子表格中。 完整的功能可能如下所示。 我知道它非常凌亂。 現在我知道這個警察API存在我計划(當我得到一些空閑時間)設置類似的東西時,我會更新這個答案,當我有一個更好的解決方案,但我已經測試了下面的,它確實寫了所有的數據來自電子表格的URL。

function importPoliceData() {
  var data = UrlFetchApp.fetch("http://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592&date=2013-01");
  var jsonData = JSON.parse(data.getContentText());
  var dataArray = [];
  for(var i = 0; i < jsonData.length; i++){
    var thisRow = [];
    for(var a in jsonData[i]){
      if(typeof jsonData[i][a] == 'object'){
        for(var o in jsonData[i][a]){
          if(typeof jsonData[i][a][o] == 'object'){
            for( var p in jsonData[i][a][o]){
              thisRow.push(jsonData[i][a][o][p]);
            }
          } else {
            thisRow.push(jsonData[i][a][o]);
          }
        }
      } else {
        thisRow.push(jsonData[i][a]);
      }
    }
    while(thisRow.length != 13){
      thisRow.push("");
    }
    dataArray.push(thisRow);
  }
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(1,1,dataArray.length, dataArray[0].length);
  range.setValues(dataArray);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM