0

我们需要定期将 Excel 报告数据迁移到 Drupal 节点中。我们研究了在 Drupal 中使用 slickgrid 复制一些 Excel 功能,但它还达不到标准。Excel 报告人们不想重复输入他们的数据,但他们的数据在这个 Drupal 站点中很重要。

他们有数百个 Excel 报告,并且每周更新一行。我们希望在行尾有一个按钮来触发将数据提交到 Drupal 的 VBA 宏,在 Drupal 中根据提交的信息创建一个新节点。(是的,我们对 Drupal 和 VBA 都有经验;所有用户和站点都在我们的防火墙后面。)我们需要返回新节点的 nid 或 URL,以便我们可以在 Excel 中直接创建指向该节点的链接

站点是 D6,使用 Services 3.x 模块。我尝试了 REST 服务器模块,但我们无法在没有会话身份验证的情况下检索数据,而 Excel 无法做到这一点。(除非你可以?)我还注意到它通过浏览器 url 返回的“数据”是 14 或 20 个节点的信息,而不是请求的一个 nid(例如: http: //mysite.com/services/rest/report/node /30161 )

当我尝试从 VBA 创建一个像这样的简单节点时:

Dim MyURL as String
MyURL = "http://mysite.com/services/rest/report/node?node[type]=test&node[title]=testing123&node[field_test_one][0][value]=123"
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")

With objHTTP
    .Open "GET", MyURL, False
    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .send (MyURL)
End With

我得到 HTTP 状态:未经授权:用户 0“匿名”的访问被拒绝和 HTTP 响应:null

我搜索的所有内容都有 php 或 java 中的示例,VBA 中没有。还尝试切换到使用 XMLRPC 服务器,但这更加令人困惑。我们想要 json(使用 application/json,在 REST 服务器设置中相应地设置格式化程序),但会使用任何有效的东西。

想法?提前致谢!

编辑:我在 .Open 中将 POST 更改为 GET,并尝试了不同的请求标头(json、xml 等)。我仍然返回了 14 个节点的基本节点数据,而不是我请求的单个节点。我想这证明我的 REST 服务器正在我指定的 URL 上工作,但我仍然不知道如何从 Excel 将节点发布到 Drupal。

另一个编辑: GET 和 DELETE 正在工作,而不是 POST 或 PUT !?!作为浏览器中的匿名用户,我可以像往常一样将“http://mysite.com/node/add/test”粘贴到地址栏中,它只提示我输入标题,我可以毫无问题地匿名创建它。通过 Excel 提交会导致“未经授权:用户 0“匿名”的访问被拒绝”错误。所以我可以查看和删除但不能创建?我仔细检查了我的烫发设置是否正确。

4

2 回答 2

0

我一直发现错误消息实际上意味着他们所说的。

HTTP Status: Unauthorized: Access denied for user 0 "anonymous" 

看起来您的 Web 服务器正在期待某种 VBA 脚本没有/无法提供的登录和身份验证。

于 2012-04-05T01:43:50.363 回答
0

不使用 CRUD,您可以直接将数据推送到数据库,绕过任何 REST 交互吗?我在电子表格和 Drupal 站点之间移动了大量数据,并且有一些 VBA 模块可以帮助我轻松地与 Drupal 数据库模式进行交互。这些适用于 Drupal 8。

第一个库允许用户创建 SQL 查询而无需进行一堆字符串连接,更符合 Drupal SQL 对象。第二个允许人们像 Drupal 实体一样配置 VBA 对象,并在 Drupal 的数据库中插入和查找这些实体。

于 2018-10-29T12:10:13.710 回答