我们可以将Google电子表格用作后端数据库吗?

问题描述 投票:4回答:3

我正在尝试开发一个应用程序,在那里我从多个客户端获取与某些事务相关的数据。现在我想使用Google电子表格进行一些分析。有什么方法可以使用ASP.Net MVC(使用C#)实现这一点。 Google提供OAuth以及当我实施代码时以及当我尝试将数据发送到我从客户端收到的Google电子表格时。但是,当我这样做时,对于每个新客户,Google都会要求提供登录凭据。客户输入自己的凭据,而Google工作表则改为常用工作表,使用客户端自己的工作表。因此,我的目的没有解决。有什么办法可以做到这一点。我似乎也没有在Google上找到适当的文档。请提供一些实施此建议的建议。提前致谢。

google-sheets
3个回答
14
投票

如果您只想要一个只读数据库,这可以很容易地完成。您必须将Google表格发布到网络上,然后从其网址中复制其ID。

例如我的工作表有这个网址:https://docs.google.com/spreadsheets/d/1IHF0mSHs1HdYpIlIzYKG3O8SnAhKU_a6nEJSz04Togk/edit

中间的长字母数字字符串是我的工作表ID。将其复制并将其放在以下URL中,而不是XXXX,如下所示:

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

所以最后的网址看起来像这样:https://spreadsheets.google.com/feeds/list/1IHF0mSHs1HdYpIlIzYKG3O8SnAhKU_a6nEJSz04Togk/1/public/basic?alt=json

然后,您只需访问此URL并将所有数据作为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。

希望能帮助到你。


5
投票

这可以使用Google Apps Script来完成。特别是,您可以使用Google表格中的“bound”脚本(即在您希望创建为“后端”的工作表的上下文中创建的脚本)来实现此目的,然后将其作为“web app”脚本发布。当您发布它时,您可以使用电子表格所有者的权限(而不是调用该URL的用户的权限)来执行它,这不需要最终用户明确授权自己(因为它是脚本发布者的凭据,而不是正在使用的用户凭据)。

应该注意的是,虽然这(并且通常建立在Google Apps脚本之上)对于中小型应用程序来说是一种合理的方法,但您可能会发现使用Google Cloud Platform(在这种特殊情况下,使用Cloud Datastore)适用于小型到大型应用的更好,更具可扩展性的解决方案。也就是说,如果你是原型制作或创建一个不太可能在一夜之间起火的内部工具,我会选择你认为更方便/更简单的方法;如果你正在创建一个可能会遇到“成功灾难”的应用程序,我会选择使用Cloud Platform。


2
投票

如果您的工作表是公开的,则无需身份验证即可完成。您可以将google API Visualization与查询语言一起使用,也可以使用Google表格API。但是,如果您的工作表是私有的,则必须通过服务帐户凭据使用OAuth2身份验证。为此,您必须创建一个服务帐户(例如,具有项目角色的所有者)。然后,您必须下载client_secret.json文件,该文件将是您在代码中使用的文件。最后,您必须与您在此文件中收到的电子邮件共享您的电子表格。查看文件,您将看到它。

我做了一个教程。您可以访问http://edba.xyz/google-sheets-as-database。它主要基于PHP,但很容易传输到其他语言。

© www.soinside.com 2019 - 2024. All rights reserved.