2016-01-22 42 views
3

我想開發一個應用程序,在那裏從多個客戶端獲取與某些事務相關的數據。現在我想使用Google Spreadsheet進行一些分析。有什麼辦法可以使用ASP.Net MVC(使用C#)來實現這一點。 Google提供了OAuth,當我執行代碼時以及何時嘗試將數據發送到我從客戶端接收到的Google電子表格中。但是,當我這樣做時,對於每個新客戶,Google都會要求提供登錄憑據。客戶端輸入他們自己的憑證,並使用Google表格而不是普通工作表,使用客戶端自己的工作表。因此,我的目的沒有解決。有沒有辦法做到這一點。我似乎也沒有在Google上找到適當的文檔。請提供一些建議來執行此操作。提前致謝。我們可以使用谷歌電子表格作爲後端數據庫

+0

相關:http://stackoverflow.com/questions/5037223/using-google-docs-as-a-database –

+0

相關:http://stackoverflow.com/questions/6270210/authenticating-and-using-a -google-spreadsheet-as-a-database-for-a-web-app –

+0

是的,你可以,我在網上找到這個 – ziaullahzia

回答

4

這可以使用Google Apps Script完成。特別是,您可以通過Google表格中的「bound」腳本(即,在希望創建爲「後端」的工作表上下文中創建的腳本)實現此目標,然後將其發佈爲「web app」腳本。當您發佈它時,您可以使用電子表格所有者的權限(而不是調用url的用戶的權限)執行它,而不需要最終用戶明確授權自己(因爲它是腳本發佈者的憑證,而不是正在使用的用戶憑證)。

需要注意的是,雖然這個(通常建立在Google Apps腳本之上)對於中小型應用程序來說是一個合理的方法,但您可能會發現使用了Google Cloud Platform(在這種情況下, Cloud Datastore)作爲針對小型到大型應用的更好,更具擴展性的解決方案。也就是說,如果你正在製作原型或創建一個內部工具,而這個工具不可能在一夜之間着火,那麼我會採用任何你認爲更方便/更簡單的方法;如果您正在創建可能會遇到「成功災難」的應用程序,那麼我會選擇使用Cloud Platform。

+0

我認爲這很重要,要注意Google表格有200萬個單元格的限制。 –

+0

基於數據庫的大小,或者對錶單請求的可靠性(或可能的速率限制),是否存在可擴展性問題? 我的用例涉及向Web應用程序提供一個只讀數據庫。如果我需要我可以實現一個緩存層。 – Pirijan

+0

@Pririjan您可能會感興趣:https://script.google.com/dashboard https://cloud.google.com/appengine/quotas https://cloud.google.com/datastore/sla https:/ /cloud.google.com/datastore/pricing –

10

如果你只是想要一個只讀數據庫,這可以很容易地完成。 您必須將您的Google工作表發佈到網絡,並從其網址中複製其ID。

例如我的表有這個網址:https://docs.google.com/spreadsheets/d/1IHF0mSHs1HdYpIlIzYKG3O8SnAhKU_a6nEJSz04Togk/edit

中間的長字母數字串是我的表ID。複製它,並把它而不是XXXX在以下網址如下:

https://spreadsheets.google.com/feeds/list/XXXX/1/public/basic?alt=json

所以最終的URL看起來像這樣: https://spreadsheets.google.com/feeds/list/1IHF0mSHs1HdYpIlIzYKG3O8SnAhKU_a6nEJSz04Togk/1/public/basic?alt=json

然後,你可以簡單地訪問該網址,並得到所有的數據作爲JSON 使用jQuery:

var $url = 'https://spreadsheets.google.com/feeds/list/1IHF0mSHs1HdYpIlIzYKG3O8SnAhKU_a6nEJSz04Togk/1/public/basic?alt=json'; 
$.getJSON($url,function(data){ 
    alert(JSON.stringify(data.feed.entry)); 
}); 

你會得到一個很長的JSON結構的相關數據是data.feed.entry有你有米。任何條目。在每一個你會有一個「內容」屬性,並在其中,「$ t」之一。這些會給你所有的細胞。 因此,爲了獲得第一行,您將不得不獲得data.feed.entry [0] .content。$ t。

希望它有幫助。

+0

而不是整個文件作爲JSON對象,我們可以像SQL查詢? – Naffi

1

如果您的工作表是公開的,您可以在沒有身份驗證的情況下執行此操作。您可以使用google API可視化與查詢語言或使用Google Sheets API。 但是,如果您的工作表是私人的,則必須通過服務帳戶憑據使用OAuth2身份驗證。 爲了做到這一點,您必須創建一個服務帳戶(例如,擁有項目角色的所有者)。然後你必須下載client_secret.json文件,這個文件將在你的代碼中使用。 最後,您必須與您在此文件中收到的電子郵件分享您的電子表格。查看文件,你會看到它。

我做了一個教程。您可以訪問http://edba.xyz/google-sheets-as-database。它主要基於PHP,但它很容易轉移到其他語言 。

相關問題