因此,正如标题所示,我目前正在研究一个相当棘手的问题。这是场景。
我有一个包含名称,电子邮件和到期日期模板的Google电子表格。但是,它不包含实际数据。数据本身位于Firebase中,并且不断变化。因此,我的目标是允许附加到我的电子表格的script.gs
文件通过定时间隔或使用Firebase的典型dataRef.on('value',function(){});
从Firebase中读取。
我已经尝试过使用网络应用,但是Caja会对Firebase的代码进行诋毁,为了使用Firebase对象,您必须拥有这些代码。我尝试将Firebase脚本包含为库,然后将其直接复制到script.gs
。没有任何效果。
我认为我的问题很大程度上源于gs环境,即服务器。但是,cURL
放置在script.gs
时似乎不起作用。无论如何,希望你们其中一个人有答案。如果您需要进一步澄清,请告诉我。
答案 0 :(得分:6)
我将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中。该网址必须以/.json
结尾。您的数据库结构反映在URL中。在上面的示例中,数据库对每个用户ID都有不同的记录,并且用户ID被放入URL中。
UrlFetchApp.fetch()方法可以有一个或两个参数。
fetch(url, params)
您需要使用高级参数来指定发送的请求类型:例如: PUT,GET 。注意:您无法直接使用UrlFetchApp.fetch
指定 PATCH 请求,但您可以在标头中添加覆盖以发送 PATCH 请求。< / p>
使用 PATCH 请求更加安全。
如果您决定使用UrlFetchApp.fetch
向Firebase写入数据,那么很高兴知道使用 PUT 请求可以覆盖并清除所有数据(如果网址为配置不正确。
在上面的示例中,返回的数据被放入变量:rsltList
fetch方法的第二个参数是一个对象。 {"method" : "get"}
该对象是key:value
对。
答案 1 :(得分:0)
好吧,我想出了一个相当愚蠢的方法来做到这一点,但它完成了这项工作。我设置了一个本地脚本来从Firebase中读取。每次添加值时,脚本都会向Google表单发送ajax调用,该表单包含一个充满响应的电子表格。 ajax调用模拟表单提交,中提琴!我能够通过Firebase将客户端的信息通过ajax发送到第二个客户端到googlesheet,script.gs
可以访问该信息并对其进行操作。这个解决方案的最佳部分恕我直言,我不必惹恼谷歌的偏执代码解析器/截断者:)