0

ExcelレポートデータをDrupalノードに定期的に移行する必要があります。DrupalでいくつかのExcel機能をslickgridで複製することを検討しましたが、それは嗅ぎタバコではありませんでした。Excelは、人々がデータを再入力したくないと報告していますが、このDrupalサイトにデータを保存することは重要です。

何百ものExcelレポートがあり、毎週1行ずつ更新されます。行端のボタンで、データをDrupalに送信するVBAマクロを起動します。ここで、送信された情報から新しいノードが作成されます。(はい、DrupalとVBAの両方の経験があります。すべてのユーザーとサイトはファイアウォールの背後にあります。)Excelでそのノードに直接リンクを作成できるように、新しいノードのnidまたはURLを返す必要があります。

サイトはD6で、Services3.xモジュールを使用しています。RESTサーバーモジュールを試しましたが、セッション認証をオンにしないとデータを取得できません。これは、Excelからは実行できません。(できない限り)また、ブラウザのURLを介して返される「データ」が14または20ノードの情報であり、要求されたものではないことに気付きました(例: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にノードをPOSTする方法がまだわかりません。

別の編集: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 に答える