【问题标题】:Reading Data from Firebase...with Google Apps Script从 Firebase 读取数据...使用 Google Apps 脚本
【发布时间】:2014-08-27 14:27:12
【问题描述】:

所以,正如标题所示,我目前正在解决一个相当麻烦的问题。这是场景。

我有一个 Google 电子表格,其中包含一个包含姓名、电子邮件和到期日期的模板。但是,它不包含实际数据。数据本身位于 Firebase 中并且不断变化。因此,我的目标是允许附加到我的电子表格的 script.gs 文件通过定时间隔或使用 Firebase 的典型 dataRef.on('value',function(){}); 从 Firebase 读取。

我已经尝试过使用网络应用程序,但是 Caja 将 Firebase 的代码变成了肉馅,您必须拥有这些代码才能使用 Firebase 对象。我尝试将 Firebase 脚本作为库包含在内,后来将其直接复制到 script.gs 中。没有任何效果。

我相信我的问题很大程度上源于gs环境,即服务器。但是,cURL 放在 script.gs 中时似乎不起作用。无论如何,希望你们中的一个有答案。如果您需要进一步说明,请告诉我。

【问题讨论】:

  • 使用 urlFetch 调用他们的 REST API 来获取数据不是更简单吗?
  • 我该怎么做呢?我查看了他们的文档,但似乎没有用。
  • 我不使用 Firebase,所以我不能提供详细信息,但我很确定有人会这样做......桑迪做到了 :-) !!太棒了,投票赞成:-)

标签: google-apps-script google-sheets firebase


【解决方案1】:

我将 Firebase 与 Google Apps 脚本一起使用。您需要使用 Google 的 urlFetch。 Google Documentation

代码示例:获取数据

var optList = {"method" : "get"};
var recordName = "theUserID";

var rsltList = UrlFetchApp.fetch("https://yourFireBaseDB_name.firebaseio.com/" +
recordName + "/.json", optList );

在上面的示例中,向 firebase 发出 GET 请求。您要从中获取数据的数据库必须包含在 URL 中。 URL 必须以 /.json 结尾。您的数据库结构反映在 URL 中。在上面的例子中,数据库对每个用户ID都有不同的记录,用户ID放在URL中。

UrlFetchApp.fetch() 方法可以有一个或两个参数。

fetch(url, params)

fetch Documentation

您需要使用高级参数来指定发送的请求类型:例如:PUT、GET。注意:您不能直接使用 UrlFetchApp.fetch 指定 PATCH 请求,但您可以在标头中放置一个覆盖以发送 PATCH 请求。

使用 PATCH 请求更安全。

如果您决定使用 UrlFetchApp.fetch 将数据写入 Firebase,那么很高兴知道如果 URL 配置不正确,使用 PUT 请求可能会覆盖并清除您的所有数据。

在上面的例子中,返回的数据被放入变量:rsltList

fetch 方法的第二个参数是一个对象。 {"method" : "get"}

对象是key:value 对。

【讨论】:

  • 哇,谢谢。比我的解决方法更好、更简洁的解决方案。
【解决方案2】:

好的,我想出了一个相当老套的方法来做到这一点,但它仍然可以完成这项工作。我设置了一个本地脚本来读取 Firebase。每次添加一个值时,该脚本都会向一个 Google 表单发送一个 ajax 调用,该表单有一个充满响应的电子表格。 ajax 调用模拟表单提交,viola!我可以通过 Firebase 将来自客户端的信息通过 ajax 发送到第二个客户端到 googlesheet,script.gs 可以在其中访问信息并对其采取行动。恕我直言,这个解决方案最好的部分是我不必搞乱谷歌的偏执代码解析器/mutilators :)

【讨论】:

    猜你喜欢
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2018-02-16
    • 2021-01-10
    • 1970-01-01
    相关资源
    最近更新 更多