概要
- SharePoint のリストを ADO などで読める。SOAP 使うより断然簡単。
接続文字列
Jet でつなげる場合は、
Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="WSS;IMEX=2;RetrieveIds=Yes;DATABASE=SharePointポータルのURL;LIST=リストのGUID"
Office 2007以降をインストールしているなど、ACE が使える場合は、
Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=2;RetrieveIds=Yes; DATABASE=SharePointポータルのURL;LIST=リストのGUID;
注意する点
- SQL 文で指定できるテーブル名は「list」あるいは「[table]」で固定。接続文字列でリストを指定してしまうので、別のリストを読む場合は、接続しなおす必要がある。
- 特定のビューを指定する場合は、接続文字列に「VIEW=ビューのGUID」を追加する。
- ビューを指定しないと、デフォルトのビューが適用されるので、必ずしもリストの全てのレコードが返ってこないこともある。
- 「IMEX=2」だと読み書き可能、「IMEX=1」だと読み限定、らしい。
コード(JScript / WSH)
例えばこんな感じ。
いやー。簡単だ。この方法をもっと早く知っていれば・・・。
var list = '{00000000-0000-0000-0000-000000000000}'; var view = '{00000000-0000-0000-0000-000000000000}'; var url = 'http://localhost/sharepoint/'; var constr = 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="WSS;IMEX=1;RetrieveIds=Yes;DATABASE=' + URL + ';LIST=' + list + ';VIEW=' + view + '"'; var rs = new ActiveXObject("ADODB.Recordset"); rs.Open("select * from list", constr); var data = []; for(;!rs.EOF;rs.MoveNext()) { data.push({ title: rs.Fields.Item('タイトル').Value, start: new Date(rs.Fields.Item('開始時刻').Value) }); } rs.Close();
参考文献
- SharePoint Connection String Samples – ConnectionStrings.com <http://www.connectionstrings.com/sharepoint>