【发布时间】:2018-08-14 15:52:27
【问题描述】:
如何在 Google Apps 脚本(服务器端 Google Docs 自动化)中使用 Jsonix?如果我不能,我可以在 GAS 中使用什么替代 Jsonix 从 XSD 生成 Javascript 映射,然后将 JS 对象序列化为 XML 以提交给 REST API,然后将响应反序列化回 JS 对象?
我使用 Jsonix 将 REST API 从其 XSD 文件编译为 JSON 映射。我在命令行 Node.js 中测试了一个 Javascript,它从内联 JSON 创建一个 JS 对象,然后在 Jsonix.Context 下编组它以提交给 REST API,然后解组响应。
然后我用我的脚本创建了一个 Google Apps 脚本项目。我使用 Jsonix.js 脚本(作为 Jsonix.gs)创建了另一个 GAS 项目,然后使用映射脚本(作为 API.gs)创建了另一个 GAS 项目。我使用 Jsonix 和 API 库的项目密钥配置了我的主脚本的项目资源。我可以执行我的脚本(验证是否使用了库资源),但是在调用 Jsonix.createDocument() 时它会失败。我在 Jsonix 库脚本 _jsonix_factory = function(_jsonix_xmldom, _jsonix_xmlhttprequest, _jsonix_fs) 的开头插入了一个记录 _jsonix_xmldom: undefined 的 Logger.log("_jsonix_xmldom: " + _jsonix_xmldom) 行,这就是为什么 Jsonix.createDocument() 会抛出错误而不是返回文档。
我可以在 GAS 环境中使用 Google Apps 脚本服务 XmlService 或其他一些服务,而不是 Jsonix 默认期望的 _jsonix_xmldom 吗?或者我可以包含一些功能等效的库作为库资源吗?或者以其他方式在 GAS 中向 Jsonix 提供该功能?
我希望 Jsonix 尝试使用同样未定义的 _jsonix_xmlhttprequest 和 _jsonix_fs 值也会导致类似的错误。我在 Jsonix.js (.gs) 源代码中看到了这两行
// REWORK
// Node.js
在createDocument() 声明和其他地方。也许我报告的这个案例正在积极开发中?
感谢您的见解。
【问题讨论】:
-
请注意,所有依赖项中的所有全局变量都会针对每个新实例进行评估,因此如果您的项目变得缓慢,这就是原因。服务器实例之间的 Google Apps 脚本没有持久性。
标签: javascript google-apps-script xmldom jsonix