SharePoint のデータを ADO などで読む

概要

  • 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();

参考文献

  1. SharePoint Connection String Samples – ConnectionStrings.com <http://www.connectionstrings.com/sharepoint>

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>