【问题标题】:Connecting Google Apps Script to a Parse Database (ScriptDB Replacement)将 Google Apps 脚本连接到 Parse 数据库(ScriptDB 替换)
【发布时间】:2014-05-23 13:50:14
【问题描述】:

最近有消息称 ScriptDB 已被弃用,我正在寻找合适的替代品。我的特殊用例是我在 Google 表单下运行 Google Apps 脚本来处理和存储与表单功能相关的数据。

我已经阅读了 Google 的迁移指南 (link),并且正在尝试将在 Google 表单下运行的 Google Apps 脚本连接到 Parse 数据库 (link)。我已经尝试了迁移指南中列出的两种方法(URL Fetch Service 和 ParseDB Library),但我都无法正常工作。我能够使用 ParseDB 写入 Parse 数据库,但查询功能没有按预期工作。我还尝试使用 Excel Liberation 站点中的 parseCom 库(抱歉,我显然没有这篇文章的链接),但这也不是很好。

我最感兴趣的是使用 Google 的 URL Fetch Service 连接到 Parse 数据库,因为这似乎是我最灵活的选择(即让我在表单之间共享数据 - 这是我用 scriptDB 真的无法做到的) ,但我觉得我有点过头了。我也对其他选择持开放态度。提前致谢!

【问题讨论】:

  • 您在使用 ParseDB 库时遇到了哪些具体问题?
  • 我能够使用 ParseDB 库将项目添加到数据库并计算数据库中的项目数。然而,db.query 并没有像 ParseDB 预期的那样运行——它返回了相当多的 HTML,似乎并没有表明(至少对我来说)问题是什么。
  • 您的查询是什么样的?
  • 我没有记录查询输出。我重新编写了我正在使用的脚本,现在我的查询得到了清晰的响应。我猜是因为我是菜鸟。我仍然对通过 UrlFetchApp 进行连接感兴趣,但是当我尝试通过 UrlFetchApp 获取时,URL 会引发未指定的错误。我正在尝试使用以下命令通过 Parse REST Api (parse.com/docs/rest) 获取:UrlFetchApp.fetch(myAppID:javascript-key=myJavaScriptKey@api.parse.com/1/classes/…) [显然用我的数据代替占位符]。
  • @jcastle0 你是如何设法让它将项目添加到数据库/计数中的?你介意分享你的代码吗?

标签: google-apps-script parse-platform nosql


【解决方案1】:

我在使用 MongoLab 数据库时遇到了与 overstack-asked here 相同的“查询”问题。我认为 Parse 可以作为替代方案,但后来我看到这篇文章有同样的“查询”问题。

如果您从浏览器直接向 Parse 运行查询,它可能会正常工作,就像我使用 MongoLab 数据库一样。

因此,我强烈怀疑问题出在 URLFetchApp.fetch() 函数本身,而不是 Parse(或 MongoLab)数据库函数。

【讨论】:

  • 我可以用 UrlFetchApp.fetch() 查询 MongoLab 就好了。我无法让它写入 MongoLab 数据库。只需使用与您的实例中的内容匹配的变量来获取下面的这个 url。 var allDocUrl = 'api.mongolab.com/api/1/databases' + db + '/collections/' + 集合 + '?apiKey=' + apiKey;
  • 你上面的url返回整个集合(或表);不是查询,如:var url = 'api.mongolab.com/api/1/databases/my-db/collections/my-coll?q={"active": true}&apiKey='; var oDataObject = JSON.parse(UrlFetchApp.fetch(url).getContentText());
  • 'q' 部分是 json 查询对象,UrlFetchApp 不接受作为 fetch() 的输入参数。
  • 我用app脚本把它写到MongoLab,如下: oDataObject = JSON.stringify(oDataObject); var url = 'api.mongolab.com/api/1/databases/'+ MWO_GetDbName() +'/collections/my-coll' + '?apiKey=' + MWO_GetDbKey(); var options = { "method": "post", "contentType": 'application/json', "payload": oDataObject }; var sResponse = UrlFetchApp.fetch(url, options).getContentText();
  • 要添加查询,您只需在 URL 的 "&q=" 部分之后添加 cleanQuery 变量: var query = { "key" : { "_id" : 1 } }; var cleanQuery = encodeURIComponent(Utilities.jsonStringify(query));
【解决方案2】:

这是我发现使用 UrlFetchApp 和 Parse 查询结果的最佳方式。

function query(key,value) {
  var properties = getKeys();
  var appId = properties.appId;
  var restApi = properties.restApi;
  var class = 'TestObject';
  var url = 'https://api.parse.com/1/classes/' + class;

  var query = 'where={"' + key + '":"' + value + '"}'

  var encoded = encodeURIComponent(query);
  var queryUrl = url + '?' + encoded;

  var options = {
    "method" : "get",
    "headers" : {
      "X-Parse-Application-Id": appId,
      "X-Parse-REST-API-Key": restApi,
    }
  }

  var data = UrlFetchApp.fetch(queryUrl, options);
  return data;
}

【讨论】:

  • 谢谢,有机会我会测试一下!
【解决方案3】:

我也在找这个。

作为临时存储,ScriptDb 非常有帮助。 Sheets 根本没有 ScriptDb 中漂亮编码的优雅

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 2022-11-23
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多