質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Windows 10

    947questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • VBScript

    221questions

    VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

  • SharePoint

    54questions

    SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

Web(SharePoint2010のライブラリ)からファイルをダウンロードできないときに考えられる原因は何でしょうか?

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 206

sumire_cl

score 54

 前提・実現したいこと

Web(SharePointのライブラリ)に置いてあるファイルをダウンロードする作業があります。
フォルダやファイルの数がとても多いので、いっこずつクリックしてダウンロードして…… ってやってるとキリがないのです。
(WebDAVは無いしこれからあるようになる予定もありません)

なので、フォルダごとにまとめてダウンロードしてくれるようなのをしてくれるようなのを、いろんなサイトを検索して真似したりして書きました。

引数にするテキストファイルはこんな感じです。
1行目:ダウンロード元のフォルダのURL
2行目:ダウンロード先のフォルダのパス
3行目以降にファイル名を列挙します。(ファイルの種類はいろいろです。SharePointの仕様上、最大限に大きくても50MBはありません)

http://www.sample.jp/site/dept01/DocLib01/folder01/
D:\bkup\folder01\
file01.txt
帳票.xlsx
プレゼン資料20180701.pptx
001部長からのメール.msg

ダウンロードするためのスクリプトはこれです。

Set objShell = WScript.CreateObject("WScript.Shell")
Set objXmlHttp = WScript.CreateObject("MSXML2.XmlHttp")
Set objFso = WScript.CreateObject("Scripting.FileSystemObject")

'ファイル一覧が列挙されてるテキストファイルを読み込んで配列に格納(1行目に置いてある場所のURL)
Set objFile = objFso.OpenTextFile("filelist.txt")
Dim aryRet()
Dim gyosu : gyosu = 0
Do Until objFile.AtEndOfStream
  redim Preserve aryRet(gyosu)
  aryRet(gyosu) = objFile.ReadLine
    gyosu = gyosu + 1
Loop
objFile.Close

'置いてある場所のURLが1行目に書いてある
cReqPath = aryRet(0)

'3行目以降のファイル名を読んで順にダウンロード
Dim i
for i = 2 to gyosu-1 step 1
  cFileName = aryRet(i)
  objXmlHttp.Open "GET", cReqPath & cFileName, False
  objXmlHttp.Send
  intStatus = objXmlHttp.status
  If (intStatus <> 200) Then
    WScript.Echo "FAILED" & vbCrLf & vbCrLf & "HTTP status code is " & intStatus & vbCrLf & cFileName
    WScript.Quit
  End If

'ダウンロード先にする場所のネットーワークパスが2行目に書いてある
  toNWDirectory = aryRet(1)
  Set objStream = WScript.CreateObject("ADODB.Stream")
  objStream.Open
  objStream.Type = 1
  objStream.Write objXmlHttp.responseBody
  objStream.SaveToFile toNWDirectory & cFileName, 2
  objStream.Close
  Set objStream = Nothing
next

WScript.Echo "フォルダ" & vbCrLf & toNWDirectory & vbCrLf & "にダウンロードしました。"
Set objXmlHttp = Nothing

WScript.Quit

 発生している問題

ときどき、404エラーでダウンロードできないファイルが出てきます。
ファイル名は合っています。
当該のファイルを手でダウンロード(ファイル名を右クリック→「対象をファイルに保存」)すると正常にダウンロードできます。

なにか共通する問題点
(たとえば、ファイル名の先頭が特定の文字や記号や数字で始まるとか、ファイル名のなかにスペースがあるとか、特定の拡張子とか)
があるのかなーと、大丈夫だったファイルとダメだったファイルを並べて観察しましたが、私には共通点がみつけられませんでした。

ファイルはあるのに404エラーでダウンロードできない場合に
考えられる原因って、どのようなものがあるのでしょうか。やっぱりファイル名とかでしょうか。
そのような場合に原因をみつけるのは、どのような手段があるのでしょうか。

 補足情報(FW/ツールのバージョンなど)

使用しているPCのOSはWindows10で、SharePointは2010です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • sumire_cl

    2018/07/05 15:32

    そうですそうです!そして https://oku.edu.mie-u.ac.jp/~okumura/php/fakefile.php/ でやってみましたが、これはちゃんとダウンロードできました。ファイル名がめっちゃ化けますがそれはまた別のお話です。なので日本語ファイル名だとダメっていうこともなさっぽい…… 他にも試してダメなやつを見つけます。

    キャンセル

  • sysjojo

    2018/07/05 15:38

    あ、いや、試してみて確認したということではなく、SharePoint側のログやコンソールでアクセス制限してないことを確認したのですかね?

    キャンセル

  • sysjojo

    2018/07/05 15:40

    手でするとできる、という点がキャッシュをクリアしたり、別のブラウザを新しくインストールしたりしてもできるのであれば言い切ってもよいと思うのですが、あずかり知らぬところで認証が通ってたりしないかな?というのが気になります。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Windows 10

    947questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • VBScript

    221questions

    VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

  • SharePoint

    54questions

    SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です