Spreadsheet Launcher コントロールを使用して連絡先をインポートする
最終更新日: 2010年10月19日
適用対象: SharePoint Foundation 2010
このコードの例では、SpreadsheetLauncher コントロールを使用してアドレス帳を開き、選択した連絡先を Microsoft SharePoint Foundation に基づく Web サイトの連絡先リストにインポートします。ここでは、ImportFromAddressBook 関数を呼び出すリンク コマンドまたはボタン コマンドが存在することを想定しています。
<!--Create an AddrBookWrapper object to open the address book and return all information for each contact selected.-->
<SCRIPT language="VBScript">
Function OpenABW()
Dim objAddrBkWrap
Dim objContacts
Dim objABWOp
OpenABW = ""
On Error Resume Next
Set objAddrBkWrap = CreateObject("MsSvAbw.AddrBookWrapper")
If IsObject(objAddrBkWrap) Then
objABWOp = objAddrBkWrap.AddressBook(, 1, , , , objContacts, , , True)
If objABWOp <> 0 then
OpenABW = ""
Else
OpenABW = ProcessABWCollection(objContacts)
End If
End If
On Error GoTo 0
End Function
<!--Create a SpreadsheetLauncher object to use for import of the data and ensure the object's presence.-->
Function EnsureImport()
Dim objEnsureImport
EnsureImport = 0
On Error Resume Next
Set objEnsureImport = CreateObject("SharePoint.SpreadsheetLauncher.1")
If IsObject(objEnsureImport) Then
objEnsureImport.EnsureImport()
End If
On Error GoTo 0
End Function
</SCRIPT>
<!--Return success or failure of importing contacts.-->
<SCRIPT language="JavaScript">
function DoImportFromAddressBook() {
return OpenABW(); }
<!--Iterate through the properties and fields arrays created
per contact by the ProcessABWCollection function, and create
the CAML for registering each field and value in the
Office namespace.-->
function XMLSetVars(obj, rgstProps, rgstFields) {
var ist;
var st = "";
for (ist = 0; ist < rgstProps.length; ist++) {
{ st += "<SetVar Name=\"urn:schemas-microsoft-
com:office:office#" +
rgstFields[ist] + "\">" +
STSHtmlEncode(obj[rgstProps[ist]]) + "</SetVar>";
}
return st; }
<!--Using arrays, assign to each contact item the same properties and
fields, and construct the CAML code for importing the items via the
batch manager RPC.-->
function ProcessABWCollection(col) {
var rgstProps = new Array("FirstName", "LastName", "SMTPAddress",
"CompanyName", "JobTitle", "HomeTelephoneNumber",
"BusinessTelephoneNumber", "MobileTelephoneNumber",
"BusinessFaxNumber", "BusinessAddressStreet",
"BusinessAddressCity", "BusinessAddressState",
"BusinessAddressPostalCode", "BusinessAddressCountry",
"Body");
var rgstFields = new Array("FirstName", "Title", "Email",
"Company", "JobTitle", "HomePhone", "WorkPhone", "CellPhone",
"WorkFax", "WorkAddress", "WorkCity", "WorkState", "WorkZip",
"WorkCountry", "Comments");
var st;
var e = new Enumerator(col);
if (e.atEnd())
return "";
st = "<" + "ows:Batch OnError=\"Return\">";
for (; !e.atEnd(); e.moveNext()) {
st += "<Method ID=\"0\"><SetList Scope=\"Request\">
</SetList><SetVar Name=\"Cmd\">Save</SetVar>
<SetVar Name=\"ID\">New</SetVar>";
st += XMLSetVars(e.item(), rgstProps, rgstFields);
st += "<SetVar Name=\"urn:schemas-microsoft-
com:office:office#WebPage"
+ "\">" + e.item()["WebPage"] + ", </SetVar>";
st += "</Method>";
}
st += "</ows:Batch>";
return st; }
</SCRIPT>
<!--Initiate import of address book contacts and submit items to
server.-->
<SCRIPT language="JavaScript">
function ImportFromAddressBook() {
if (0 == EnsureImport()) {
st = DoImportFromAddressBook();
if (st.length > 0) {
FormABWImport.NextUsing.value = window.parent.location;
FormABWImport.PostBody.value = st;
FormABWImport.submit(); }
}
}
</SCRIPT>
<!--Define a form for posting the imported data to the server.-->
<FORM id=FormABWImport method="POST"
action="http://STSServer1/Sub1/_vti_bin/owssvr.dll?CS=109">
<INPUT type=hidden name="NextUsing" value="">
<INPUT type=hidden name="Cmd" value="DisplayPost">
<INPUT type=hidden name="PostBody" value="">
</FORM>
ImportFromAddressBook 関数では最初に EnsureImport 関数を呼び出して、データを連絡先リストにインポートするための SpreadsheetLauncher オブジェクトを作成することに注意してください。
OpenABW 関数では AddrBookWrapper オブジェクトが使用されています。このオブジェクトは、アドレス帳の参照と選択のユーザー インターフェイス (UI) の表示を容易にする ActiveX コントロールのインターフェイスです。このオブジェクトは、MAPISession オブジェクト用の、修正版 Microsoft Collaboration Data Objects (CDO) バージョン 1.2.1 の AddressBook メソッドを実装します。この例では、メソッドの 9 個のオプション パラメーターのうち 3 つが指定されています。nSelBoxes パラメーターでは、表示するリスト ボックスの数を指定します。この例では 1 つだけ指定されています。SelUsers1Contacts パラメーターでは、選択した連絡先ごとに取得される連絡先アイテムのコレクションを指定します。fFullInfo パラメーターには Boolean 値の true が含まれています。この値では、各連絡先についてのすべての情報が返されます。クライアント コンピューターに Microsoft Office がインストールされている場合、このコントロールは Msosvabw.dll ファイルで提供されます。