Importieren von Kontakten mit dem SpreadsheetLauncher-Steuerelement
Letzte Änderung: Dienstag, 19. Oktober 2010
Gilt für: SharePoint Foundation 2010
Unter Verwendung eines SpreadsheetLauncher-Steuerelements werden in diesem Codebeispiel das Adressbuch öffnet und die ausgewählten Kontakte in die Liste Kontakte einer auf Microsoft SharePoint Foundation basierenden Website importiert. Es setzt voraus, dass es einen Link oder Schaltflächenbefehl gibt, über den die ImportFromAddressBook-Funktion aufgerufen wird.
<!--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>
Beachten Sie, dass die ImportFromAddressBook-Funktion zuerst die EnsureImport-Funktion aufruft, um ein SpreadsheetLauncher-Objekt zum Importieren der Daten in die Liste Kontakte zu erstellen.
In der OpenABW-Funktion wird ein AddrBookWrapper-Objekt verwendet, bei dem es sich um eine Schnittstelle für ein ActiveX-Steuerelement handelt, das die Anzeige der Benutzeroberfläche für Such- und Auswahlvorgänge des Adressbuchs erleichtert. Dieses Objekt implementiert eine modifizierte Version der Microsoft CDO-Methode AddressBook (Collaboration Data Objects-Version 1.2.1) für das MAPISession-Objekt. Bei diesem Beispiel werden drei der neun optionalen Parameter der Methode angegeben. Der nSelBoxes-Parameter gibt die Anzahl der anzuzeigenden Listenfelder an (in diesem Beispiel wird nur eines angegeben). Der SelUsers1Contacts-Parameter gibt die Auflistung der Kontaktelemente an, die für den jeweils ausgewählten Kontakt abgerufen werden. Der fFullInfo-Parameter enthält den Boolean-Wert true, der angibt, dass alle Informationen zum jeweiligen Kontakt zurückgegeben werden. Sofern Microsoft Office auf dem Clientcomputer installiert ist, wird dieses Steuerelement in der Datei Msosvabw.dll bereitgestellt.