Importation de contacts à l'aide du contrôle SpreadsheetLauncher
Dernière modification : mardi 19 octobre 2010
S’applique à : SharePoint Foundation 2010
À l’aide du contrôle SpreadsheetLauncher, cet exemple de code ouvre le carnet d’adresses et importe les contacts sélectionnés dans la liste Contacts d’un site Web basé sur Microsoft SharePoint Foundation. Il part du principe qu’un lien ou une commande de bouton appelant la fonction ImportFromAddressBook existe.
<!--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>
Notez que la fonction ImportFromAddressBook appelle d'abord la fonction EnsureImport pour créer un objet SpreadsheetLauncher et importer les données dans la liste des contacts.
Dans la fonction OpenABW, un objet AddrBookWrapper est utilisé. Il s’agit de l’interface d’un contrôle ActiveX qui facilite l’affichage de l’interface utilisateur de navigation et de sélection du carnet d’adresses. Cet objet implémente une version modifiée de la méthode AddressBook des CDA (Microsoft Collaboration Data Objects) version 1.2.1 pour l’objet MAPISession. Dans cet exemple, trois des neuf paramètres facultatifs de la méthode sont spécifiés. Le paramètre nSelBoxes indique le nombre de zones de liste à afficher (une seule dans cet exemple). Le paramètre SelUsers1Contacts indique la collection des éléments de contact récupérés pour chaque contact sélectionné. Le paramètre fFullInfo contient une valeur Boolean, true, qui spécifie que toutes les informations de chaque contact sont renvoyées. Lorsque Microsoft Office est installé sur l’ordinateur client, ce contrôle est fourni dans le fichier Msosvabw.dll.