2012-04-04 233 views
0

我们需要定期将Excel报表数据迁移到Drupal节点。我们着眼于在Drupal中使用slickgrid复制Excel的某些功能,但它并不适用于snuff。 Excel报告人们不希望双重输入他们的数据,但他们的数据对于这个Drupal站点很重要。excel vba到CRUD drupal节点

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

Site是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响应:空

一切我搜索了在VBA PHP或Java中,没有实例。还尝试切换到使用XMLRPC服务器,但这更令人困惑。我们希望json(使用application/json,在REST服务器设置中相应地设置formatter),但是会使用任何可行的方法。

想法?提前致谢!编辑:我改变张贴在.Open GET,并尝试不同的请求标头(JSON,XML等)我仍然得到14个节点的基本节点数据返回,而不是我请求的单个节点。我想这证明我的REST服务器正在我指定的URL上工作,但我仍然不知道如何从Excel向Drupal发布节点。

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

回答

0

我一直发现,错误消息实际上意味着他们说什么。

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

看起来像你的Web服务器期待某种登录和验证该VBA脚本不会/不能提供的。

+0

好点,我也意识到我在.Open中使用POST而不是GET,我改变了它,再次尝试了XML和json。仍给我最后14个节点的基本节点数据,而不是我要求的节点数据。我检查了RSS,以防我以某种方式拉动它,但它被设置为10个项目。很好的结果,我仍然需要关于如何从Excel向Drupal发布节点的建议。谢谢! – 2012-04-05 14:52:51