Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json excel vba到CRUD drupal节点_Json_Drupal_Excel - Fatal编程技术网

Json excel vba到CRUD drupal节点

Json excel vba到CRUD drupal节点,json,drupal,excel,Json,Drupal,Excel,我们需要定期将Excel报表数据迁移到Drupal节点。我们考虑了用slickgrid在Drupal中复制一些Excel功能,但没有达到要求。Excel报告人员不希望重复输入他们的数据,但是他们的数据在这个Drupal站点中很重要 他们有数百份Excel报告,每周更新一行。我们希望在行的末尾有一个按钮来触发一个VBA宏,该宏将数据提交给Drupal,在Drupal中根据提交的信息创建一个新节点。(是的,我们对Drupal和VBA都很有经验;所有用户和站点都在我们的防火墙后面。)我们需要返回新节点

我们需要定期将Excel报表数据迁移到Drupal节点。我们考虑了用slickgrid在Drupal中复制一些Excel功能,但没有达到要求。Excel报告人员不希望重复输入他们的数据,但是他们的数据在这个Drupal站点中很重要

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

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

当我尝试从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服务器设置中相应地设置格式化程序),但将使用任何有效的东西

想法?提前谢谢

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


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

我总是发现错误消息实际上是他们说的意思

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

看起来您的web服务器需要某种VBA脚本没有/无法提供的登录和身份验证。

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


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

好的方面,我还意识到我在中使用了POST。打开时,我没有使用GET,而是对其进行了更改,再次尝试了XML和json。仍然为我提供最后14个节点的基本节点数据,而不是我请求的数据。我检查了RSS,以防我以某种方式拉动它,但它设置为10项。很好,我仍然需要关于如何从Excel向Drupal发布节点的建议。谢谢