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

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

新規登録して質問してみよう
ただいま回答率
85.48%
SharePoint

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

VBScript

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

4回答

4002閲覧

「コピーしてダウンロード」と同じボタンを作りたいです。

sumire_cl

総合スコア228

SharePoint

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

VBScript

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/03/07 05:58

編集2017/03/09 05:29

###前提・実現したいこと
SharePoint Foundation2010で、WebDAV機能は使えない環境です。
ドキュメントライブラリにはExcelとPDFのファイルがたくさん入っています。
権限はサイト管理者までなのでサーバで何かすることはできません。

最終的にやりたいことは
「ボタン1個押したら当該のドキュメントライブラリをまるごとローカル環境にコピーできる」
なんですが
まず最初に、ファイル1個だけダウンロードできるボタンを作りたいです。
リボンにある「コピーしてダウンロード」のボタンと同じ感じです。

###試したこと

最初はバッチファイルでできるかなーって思ったんですが

VBscript

1Const FromNw = "\SharePointのライブラリのネットワークのパス" ' 2Const ToLocal = "C:\自分のローカル環境のパス" ' 3 4Dim FSO As Object 5Dim WSNet As Object 6Set FSO = CreateObject("Scripting.FileSystemObject") 7Set WSNet = CreateObject("WScript.Network") 8If FSO.DriveExists("Z") Then WSNet.RemoveNetworkDrive "Z:" 9WSNet.MapNetworkdrive "Z:", FromNW 10FSO.CopyFolder "Z:\" , ToLocal 11WSNet.RemoveNetworkDrive "Z:" 12MsgBox "コピーできた", vbInformation 13Set FSO = Nothing 14Set WSNet = Nothing

って感じでしょうか…
でもWebDAVがないのでこれは使えなくて

「コピーしてダウンロード」のボタンのところはなんて書いてあるんだろうと思って
見たんですが、init.jsは力不足で読み切れず、RESTでなんかしてる…?くらいしかわかりませんでした。

JavaScriptで書くなら

JavaScript

1downloadfile('ファイルURL', 'ローカルのファイル名');

みたいなのでしょうか… でもこれを書いても何も起きません。

何か良い方法があったらご教示ください。
よろしくお願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

自分の解決模索スレみたいになってて申し訳ありません…。

この書き方だと
日本語のURLや日本語のファイル名の場合には
objXmlHttp.statusで404エラーが出て取ってこられないことが判明し
そこの部分でも途方に暮れています。

VBSだから読み込むファイルはShift-JISであってると思うのですが
これをどうにかしてないのでURLとしてobjXmlHttpでGETするときに支障があるのかも
というところまでしかわかっていません。

読んだファイルを何かにエンコードしないといけないのでしょうか。何に…?どうやって…?

投稿2017/05/15 07:20

sumire_cl

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sumire_cl

2017/09/25 23:48

「そこにあるものを全部取ってくる」 という考え方が、Webでは「危険」なのだと教えてくださるかたがいらっしゃいました。 そりゃそうですよね…。 でもSharePointで、いわば「外のWeb」とはちょっと違う感じで使うものなので 引き続きなんらかの解決方法を探していきたいです。
guest

0

投稿2017/03/26 08:30

編集2017/03/26 08:34
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sumire_cl

2017/03/28 23:05 編集

ありがとうございます。 2個目のはWevDAV前提なので私の環境ではダメで 1個目のはSOAPで持ってくるやつですね。 VBSでSOAPってこう使うのかー。へえー!勉強になりました。 けど、ファイル名を指定して1個ずつ持ってくるのはもうできてしまっているので あとは「このフォルダにあるファイル全部」みたいな指定ができるかとか そのフォルダにあるファイル一覧を取れるかとかみたいなところです。 ファイルを持ってくるのはこういう方法もあるんだなあというのが学習できました。ありがとうございます。
guest

0

ファイルが置いてある場所とファイル名の一覧をテキストファイルから読んでくるようにしました。
テキストファイルの1行目に置き場所のURLを書いて、2行目以降にファイル名を列挙するような感じです。

VBscript

1Set objShell = WScript.CreateObject("WScript.Shell") 2Set objXmlHttp = WScript.CreateObject("MSXML2.XmlHttp") 3Set objFso = WScript.CreateObject("Scripting.FileSystemObject") 4 5'ファイル一覧が列挙されてるテキストファイルを読み込んで配列に格納(1行目に置いてある場所のURL) 6Set objFile = objFso.OpenTextFile("filelist.txt") 7Dim aryRet() 8Dim gyosu : gyosu = 0 9Do Until objFile.AtEndOfStream 10 redim Preserve aryRet(gyosu) 11 aryRet(gyosu) = objFile.ReadLine 12 gyosu = gyosu + 1 13Loop 14objFile.Close 15 16'置いてある場所のURLが1行目に書いてある 17cReqPath = aryRet(0) 18 19'2行目以降のファイル名を読んで順にダウンロード 20Dim i 21for i = 1 to gyosu-1 step 1 22 cFileName = aryRet(i) 23 objXmlHttp.Open "GET", cReqPath & cFileName, False 24 objXmlHttp.Send 25 intStatus = objXmlHttp.status 26 If (intStatus <> 200) Then 27 WScript.Echo "FAILED" & vbCrLf & vbCrLf & "HTTP status code is " & intStatus & vbCrLf & cFileName 28 WScript.Quit 29 End If 30 31 Set objStream = WScript.CreateObject("ADODB.Stream") 32 objStream.Open 33 objStream.Type = 1 34 objStream.Write objXmlHttp.responseBody 35 objStream.SaveToFile objShell.CurrentDirectory & "\" & cFileName, 2 36 objStream.Close 37 Set objStream = Nothing 38next 39 40WScript.Echo "カレントフォルダ" & vbCrLf & objShell.CurrentDirectory & vbCrLf & "にダウンロードしました。" 41Set objXmlHttp = Nothing 42 43WScript.Quit

次はSharePointから、ファイルの置き場所のURLと、置いてあるファイル全部のファイル名一覧をテキストにする何かを作るといいような気がしますが、どうしたらいいのかわかりません…。

投稿2017/03/10 01:52

sumire_cl

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

決まった場所からファイル名を引数で指定してダウンロードするのは
このページを写しつつ
なんかできたっぽいです。
(ファイルの置き場所は1か所に決まっているのでそのまま書いてます)

VBscript

1Const cReqPath = "http://ファイルが置いてある場所/" 2Set objShell = WScript.CreateObject("WScript.Shell") 3Set objXmlHttp = WScript.CreateObject("MSXML2.XmlHttp") 4 5Set dFilenm = WScript.Arguments 6 7for i = 0 to dFilenm.Count -1 step 1 8 cFileName = dFilenm(i) 9 10 objXmlHttp.Open "GET", cReqPath & cFileName, False 11 objXmlHttp.Send 12 intStatus = objXmlHttp.status 13 If (intStatus <> 200) Then 14 WScript.Echo "FAILED" & vbCrLf & vbCrLf & "HTTP status code is " & intStatus 15 WScript.Quit 16 End If 17 18 Set objStream = WScript.CreateObject("ADODB.Stream") 19 objStream.Open 20 objStream.Type = 1 21 objStream.Write objXmlHttp.responseBody 22 objStream.SaveToFile objShell.CurrentDirectory & "\" & cFileName, 2 23 objStream.Close 24 Set objStream = Nothing 25next 26 27Set objXmlHttp = Nothing 28WScript.Quit

あとは
「その置き場所にあるファイル全部」
というのをどう書いたらいいのか…。

投稿2017/03/09 05:40

sumire_cl

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問