Google Apps 脚本中的 Jsonix
Jsonix in Google Apps Script
如何在 Google Apps Script(服务器端 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()
抛出错误而不是返回文档的原因。
我可以使用 Google Apps 脚本服务 XmlService 或 GAS 环境中的某些其他服务,而不是 Jsonix 默认期望的 _jsonix_xmldom 吗?或者我可以将一些功能等效的库作为库资源包含在内吗?或者以其他方式向 GAS 中的 Jsonix 提供该功能?
我希望 Jsonix 尝试使用同样未定义的 _jsonix_xmlhttprequest
和 _jsonix_fs
值会导致类似的错误。我在 Jsonix.js (.gs) 源代码中看到两行
// REWORK
// Node.js
在 createDocument()
声明和其他地方。也许我报告的这个案例正在积极开发中?
感谢您的见解。
根据 github 上的 jsonix.js 来源,看来您必须进行大量工作才能在 GAS 中获得它 运行。 XMLDOM 和文档对象根本不存在于 GAS 环境中,您需要修改 jsonix 以使用 Apps 脚本提供的 XmlService 和 UrlFetchApp 服务。
请注意,虽然 jsonix 看起来有点像工作,但它的结构似乎可以处理不同的环境,添加 GAS 支持绝不是不可能的,甚至也不是那么困难。
我是 Jsonix 的作者。
我不知道 "Google Apps Script" 是什么。当然这不是 "in active development".
Jsonix 支持 Node.js 和浏览器环境 OOTB。工厂函数 _jsonix_factory
简单地接收预期由环境提供的依赖项。如果不提供依赖项,部分功能将无法使用。
目前有3个依赖:
xmldom
xmlhttprequest
fs
fs
是完全可选的。如果未提供 fs
,您将无法使用文件 - unmarshalFile
之类的方法将不起作用。没有惊喜,没什么大不了的。
xmlhttprequest
仅当您想在非浏览器环境中从 URL 进行解析时才需要。没有它,unmarshalURL
将无法工作(在非浏览器环境中)。
xmldom
在非浏览器环境中提供 DOM 解析器。 Jsonix 使用 DOM 来解析 XML,因此您需要浏览器提供 DOM 或提供 xmldom
作为依赖项。这很关键,否则 Jsonix 根本无法工作。
所以基本上您真正需要的唯一东西就是 xmldom
。它将用于:
xmldom.DOMImplementation
xmldom.XMLSerializer
xmldom.DOMParser
GAS 有 DOM 实现吗?
如果是,您很可能能够将其作为依赖项传递给 _jsonix_factory
。
如果没有,抱歉,无能为力。
我最终为 Jsonix 创建了新的 Google Apps Script 项目,因为它的 XMLDOM 依赖项,以及我的 API 映射 JS (GAS)使用 Jsonix 从 API 的 XSD 文件生成。我让我的 GAS Jsonix 项目依赖于我的 XMLDOM 项目作为库资源。然后我为我的主脚本做了一个GAS项目,它依赖于Jsonix GAS项目和API GAS项目作为库资源。有效。
我使用了一个现有的、经过良好测试的 XMLDOM 项目和适当的 FOSS 许可证,并对其进行了调整以适应 GAS API 要求。
我尝试使用 GAS XmlService,包装其 API 以将其相关成员呈现为 DOMImplementation、DOMParser 和 XMLSerializer,但是 XmlService API与XMLDOMAPI严重不符。对应于标准 DOM 实现的 XmlService API 成员的结构与标准 API.
完全不一致
如何在 Google Apps Script(服务器端 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()
抛出错误而不是返回文档的原因。
我可以使用 Google Apps 脚本服务 XmlService 或 GAS 环境中的某些其他服务,而不是 Jsonix 默认期望的 _jsonix_xmldom 吗?或者我可以将一些功能等效的库作为库资源包含在内吗?或者以其他方式向 GAS 中的 Jsonix 提供该功能?
我希望 Jsonix 尝试使用同样未定义的 _jsonix_xmlhttprequest
和 _jsonix_fs
值会导致类似的错误。我在 Jsonix.js (.gs) 源代码中看到两行
// REWORK
// Node.js
在 createDocument()
声明和其他地方。也许我报告的这个案例正在积极开发中?
感谢您的见解。
根据 github 上的 jsonix.js 来源,看来您必须进行大量工作才能在 GAS 中获得它 运行。 XMLDOM 和文档对象根本不存在于 GAS 环境中,您需要修改 jsonix 以使用 Apps 脚本提供的 XmlService 和 UrlFetchApp 服务。
请注意,虽然 jsonix 看起来有点像工作,但它的结构似乎可以处理不同的环境,添加 GAS 支持绝不是不可能的,甚至也不是那么困难。
我是 Jsonix 的作者。
我不知道 "Google Apps Script" 是什么。当然这不是 "in active development".
Jsonix 支持 Node.js 和浏览器环境 OOTB。工厂函数 _jsonix_factory
简单地接收预期由环境提供的依赖项。如果不提供依赖项,部分功能将无法使用。
目前有3个依赖:
xmldom
xmlhttprequest
fs
fs
是完全可选的。如果未提供 fs
,您将无法使用文件 - unmarshalFile
之类的方法将不起作用。没有惊喜,没什么大不了的。
xmlhttprequest
仅当您想在非浏览器环境中从 URL 进行解析时才需要。没有它,unmarshalURL
将无法工作(在非浏览器环境中)。
xmldom
在非浏览器环境中提供 DOM 解析器。 Jsonix 使用 DOM 来解析 XML,因此您需要浏览器提供 DOM 或提供 xmldom
作为依赖项。这很关键,否则 Jsonix 根本无法工作。
所以基本上您真正需要的唯一东西就是 xmldom
。它将用于:
xmldom.DOMImplementation
xmldom.XMLSerializer
xmldom.DOMParser
GAS 有 DOM 实现吗?
如果是,您很可能能够将其作为依赖项传递给 _jsonix_factory
。
如果没有,抱歉,无能为力。
我最终为 Jsonix 创建了新的 Google Apps Script 项目,因为它的 XMLDOM 依赖项,以及我的 API 映射 JS (GAS)使用 Jsonix 从 API 的 XSD 文件生成。我让我的 GAS Jsonix 项目依赖于我的 XMLDOM 项目作为库资源。然后我为我的主脚本做了一个GAS项目,它依赖于Jsonix GAS项目和API GAS项目作为库资源。有效。
我使用了一个现有的、经过良好测试的 XMLDOM 项目和适当的 FOSS 许可证,并对其进行了调整以适应 GAS API 要求。
我尝试使用 GAS XmlService,包装其 API 以将其相关成员呈现为 DOMImplementation、DOMParser 和 XMLSerializer,但是 XmlService API与XMLDOMAPI严重不符。对应于标准 DOM 实现的 XmlService API 成员的结构与标准 API.
完全不一致