Импорт контактов с помощью элемента управления запуска электронной таблицы
Дата последнего изменения: 19 октября 2010 г.
Применимо к: SharePoint Foundation 2010
В этом примере с помощью элемента управления SpreadsheetLauncher открывается адресная книга, после чего выбранные контакты импортируются в список контактов на веб-сайте Microsoft SharePoint Foundation. В этом примере предполагается наличие ссылки или кнопки, для которых реализован вызов функции 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, который представляет собой интерфейс для элемента ActiveX, предназначенного для поиска и выбора пользовательского интерфейса адресной книги. В этом объекте реализуется усовершенствованная версия метода AddressBook объектов совместной работы Microsoft CDO версии 1.2.1 для объекта MAPISession. В этом примере задаются три из девяти необязательных параметров метода. Параметр nSelBoxes определяет число отображаемых списков (в этом примере один). Параметр SelUsers1Contacts определяет коллекцию элементов контактов, полученных для каждого контакта. Параметр fFullInfo содержит значение типа Boolean (true), определяющее возврат всех данных для каждого контакта. При установке Microsoft Office на клиентском компьютере этот элемент управления содержится в файле Msosvabw.dll.