代码之家  ›  专栏  ›  技术社区  ›  Matthew

Google Apps脚本中的Jsonix

  •  0
  • Matthew  · 技术社区  · 6 年前

    如何在Google Apps脚本(服务器端Google Docs自动化)中使用Jsonix?如果我不能,那么还有什么可以替代Jsonix的呢?我可以在GAS中使用它来从XSD生成Javascript映射,然后将JS对象序列化为XML以提交给REST API,然后将响应反序列化为JS对象?

    然后我用我的脚本创建了一个Google Apps脚本项目。我用Jsonix.js脚本(作为Jsonix.gs)创建了另一个GAS项目,然后用映射脚本(作为API.gs)创建了另一个GAS项目。我用Jsonix和API库的项目键配置了主脚本的项目资源。我可以执行我的脚本(验证是否使用了库资源),但是当 Jsonix.createDocument() 被称为。我在Jsonix库脚本的开头插入了 _jsonix_factory = function(_jsonix_xmldom, _jsonix_xmlhttprequest, _jsonix_fs) Logger.log("_jsonix_xmldom: " + _jsonix_xmldom) 记录的行 _jsonix_xmldom: undefined ,这就是为什么 Jsonix.createDocument() 引发错误而不是返回文档。

    我希望Jsonix尝试使用 _jsonix_xmlhttprequest _jsonix_fs 也未定义的值。我在Jsonix.js(.gs)源代码中看到了这两行代码 // REWORK // Node.js createDocument() 声明和其他地方。也许我报告的这个案子正在积极发展中?

    3 回复  |  直到 6 年前
        1
  •  0
  •   Cameron Roberts    6 年前

    基于github上的jsonix.js源代码,看起来您必须进行大量工作才能让它在天然气中运行。XMLDOM和文档对象根本不存在于气体环境中,您需要修改JSONIX来使用AppScript提供的XMLService和URLFETCHAPP服务。

    请注意,尽管jsonix看起来很不错,但它的结构似乎可以处理不同的环境,而且添加GAS支持绝非不可能,甚至也不是那么困难。

        2
  •  0
  •   lexicore    6 年前

    我是Jsonix的作者。

    我不知道“谷歌应用程序脚本”是什么。当然,这不是“积极发展”的东西。

    Jsonix支持Node.js和浏览器环境OOTB。工厂功能 _jsonix_factory 简单地接收期望由环境提供的依赖项。如果不提供依赖项,则某些功能将无法工作。

    • xmldom
    • xmlhttprequest
    • fs

    四季酒店 四季酒店 不提供,您将无法使用 unmarshalFile

    xmlhttprequest请求 unmarshalURL 无法工作(在非浏览器环境中)。

    可扩展标记语言编程接口规范 可扩展标记语言编程接口规范

    所以基本上你真正需要的是 可扩展标记语言编程接口规范

    • xmldom.DOMImplementation
    • xmldom.XMLSerializer
    • xmldom.DOMParser

    GAS有DOM实现吗? 如果是,您很可能可以将它作为依赖项传递给 _jsonix_工厂 如果没有,对不起,什么也做不了。

        3
  •  0
  •   Matthew    6 年前

    我使用了一个现有的、测试良好的XMLDOM项目,具有适当的OFS许可证,并将其调整为符合GAS API要求。

    我尝试使用GAS XmlService,包装它的API,将其相关成员表示为dominimplementation、DOMParser和xmlsserializer,但是xmlserviceapi与xmldomapi严重不一致。与标准DOM实现对应的XmlService API成员的结构与标准API完全不一致。