我们需要定期将 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“匿名”的访问被拒绝”错误。所以我可以查看和删除但不能创建?我仔细检查了我的烫发设置是否正确。