2012-04-04 235 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