【问题标题】:How to back up a Google Apps Script's scriptdb如何备份 Google Apps 脚本脚本
【发布时间】:2012-07-09 23:27:30
【问题描述】:

如果我有一个需要定期备份的关键任务数据库,并且我将它作为脚本数据库存储在 GAS 中,有没有办法备份实际的数据库文件?似乎 db 的嵌入方式使其在脚本之外不可见?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    好吧,您可以随时查询您的所有值并JSON.stringify 它们。 如果您需要从中恢复数据库,我能注意到的唯一区别是每个项目 id 都会改变。

    这是一个例子:

    function backupDB() {
      var db = ScriptDb.getMyDb();
      var res = db.query({});
      var array = [];
      while( res.hasNext() )
        array.push(res.next().toJson());
      var dbString = JSON.stringify(array);
      Logger.log(dbString); //you'll obviously save this string somewhere else e.g. as a docs file
    }
    

    您可能还需要分块执行此操作,因为您的数据库可能有太多数据,脚本无法一次处理,就像这样。

    我也觉得这个“备份”过程也应该由 API 来处理。上面的代码只是我刚刚的一个想法。

    【讨论】:

    • 是的,这是一个很好的解决方法,但我希望 Apps 脚本能够嵌入更多内容。如果人们要将关键数据委托给 scriptdb,那么只有能够以稳健、定期的方式对其进行备份才有意义
    • 让代码自动备份其数据(例如使用时间驱动的触发器)对我来说似乎非常强大,如果你有一些“那个”关键的东西作为应用程序脚本运行,你应该是一个足够优秀的开发人员编写一个“关键”备份。但同样,是的,更“嵌入式”的东西确实会非常好。现在,如果您的意思是这是一个“增强请求”而不是一个真正的问题,那么您来错地方了。您应该在 [Apps Script Issue Tracker] 中提交一份。(code.google.com/p/google-apps-script-issues/issues/list)
    • 如果您遵循良好的实践来创建、使用和依赖您的脚本创建的 ID 重新导入将没有副作用。
    【解决方案2】:

    我想我在一个意想不到的地方为我的问题找到了不错的解决方案。除了使用 scriptdb,我可以使用 Google Fusion Table/s - 它们具有 SQL 类型的访问权限,是可以导出、备份、查看等的具体文档,并且可以充当我的应用程序的数据存储...

    【讨论】:

      【解决方案3】:

      实际答案是:您不会将关键任务数据存储在 scriptdb 中,原因有很多:

      1. appscript 没有 SLA。 Google 有许多其他存储有保证。
      2. 由于 db 不支持事务,您将无法保证批处理可以处理两次相同的数据(如果脚本在块备份或恢复过程中失败)。
      3. 如果将 id 存储在 db 中的其他对象中,情况会变得复杂。

      【讨论】:

        【解决方案4】:

        也许您可以将关键数据从 scriptdb 复制到 Google 电子表格。鉴于它在 Google 开发人员中的示例,我认为这是一个有趣的选择。

        这是链接:Copy a Database to a New Sheet in a Spreadsheet

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-07
          相关资源
          最近更新 更多