Månedligt arkiv: Februar 2014

Sådan angives mennesker som et søgeområde / Udgangspunktet for indeksering ved hjælp af SharePoint 2013 REST API

Jeg havde grund til at arbejde med SharePoint 2013 Search API via resten for første gang. Jeg ønskede at søge efter personer, ikke dokumenter. Nøglen læring her er, at angiver du indholdskilder via sin GUID (eller i det mindste i dette tilfælde). Følgende jQuery kodestykke viser hvordan:

    loadExpertsAsync: funktion() {

        jQuery.support.cors = True;

        $.Ajax({
            URL-adresse: Dette.CreateFullApiUrl() +
                "?querytext = 'hjemmesider'&SourceId = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Færdigheder,AboutMe,Interesser,Jobtitel,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&ROWLIMIT = 99",
            metode: "FÅ",
            overskrifter: { "Acceptere": "ansøgning/json; OData = verbose" },
            cache: falsk,
            succes: funktion (resultat) {

I mit tilfælde, Jeg kører API mod SharePoint online. At få GUID'EN, Jeg har fulgt disse trin:

  1. Adgang til SharePoint administration
  2. Vælg "Søg" fra den venstre hånd navigation
  3. Vælg Administrer"resultatet kilder"
  4. Vælg "Lokale folk resultater"
  5. Kig på URL-adressen.

Min URL kiggede noget som:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

Parameteren sourceid er hvad arbejdede nemlig mig.

(Jeg forstår at sourceid faktisk kan være en slags permanent ting med SP, men jeg vil altid tjekke alligevel 🙂 ).

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Eksempel SharePoint resten opkald

Her er et sæt af prøven resten opkald, der arbejder for mig og kan hjælpe dig ud samt. Som af 02/2014, there are two examples 🙂

  1. Referere til en kolonne med mellemrum i navn
  2. Referere til en multi-Vælg kolonne
  3. Udføre en People Search via resten

 

Jeg vil tilføje, at som tiden går.

Her er nogle nyttige trykfarver, jeg har fundet, samt:

Referere til en kolonne med mellemrum i navn

Jeg oprette en brugerdefineret liste med en kolonne med navnet "Blog forfatter" (plads mellem Blog og forfatter).

$select til at henvise til denne kolonne er:

image

Du skal blot udskifte rummet med "_x0020_". Vi ser _x0020_ i mange eksempler på tværs af internets og resten er ikke anderledes.

Hvis du ikke gør det, du risikerer at få en fejlmeddelelse som denne:

Udtrykket “Blog forfatter” er ikke gyldigt.

Let nok.

Referere til en multi-Vælg opslagskolonne

Opsætning af:

  1. Oprette en brugerdefineret liste navngivne kategorier.
  2. Tilføj nogle kategorier. Jeg har tilføjet kategorier thusly:image
  3. Oprette et andet brugerdefineret liste kaldet MockBlog og føje kategorier som en multi-Vælg listekolonne (eller webstedskolonne hvis det er hvordan du rulle).

Tilføje nogle elementer på listen Mockblog og du er klar.

En Ajax stil opkald ved hjælp af jQuery vil se noget som dette:

serverUrl  = "/_api/web/lister/GetByTitle('MockBlog')/elementer" +
             "?$Vælg = Title,Kategorier/titel,Blog_x0020_Author/titel" + 
             "&$Udvid = Blog_x0020_Author,Kategorier";

Vi fortæller SharePoint "Giv mig titlen for alle kategorier (Kategorier/titel). Få de faktiske værdier for Titel ved $UdvidING listen kategorier." (Min afslappende omskrive er sandsynligvis temmelig løs, men dette hvordan jeg fortolke det).

Hvis du gør det via JavaScript og brug af Fiddler til at se på output, du får noget som dette til gengæld:

 

image

(Ovenstående er en JSON objekt)

Udføre en People Search via resten

Jeg blogges om dette særskilt. Centrale er at angive en sourceid parameter hvis værdi er GUID'EN for den lokale befolkning indholdskilde. (Indholdskilder plejede at blive kaldt dækningsområder og det er min-oh-my så svært ikke at kalde alt en mulighed for mig!).

Læs mere om det her: http://www.mstechblogs.com/paul/?p=10385

 

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og nem: Oprette et SharePoint-websted ved hjælp af resten

Der er en masse ressourcer omkring at vise hvordan man gør det, men jeg kunne ikke finde en omfattende gå til link, så her er vi.

Du kan oprette et SharePoint-websted ved hjælp af API'EN resten.  Her er en fuldt bagt eksempel:

<!--
    SiteRequestForm.html: Indsamle oplysninger og oprette et websted for brugeren.
-->

<Center>
<tabel>
    <Tr>
        <TD>Navn på websted:</TD>
        <TD><input type= "tekst" Navn= "SiteName" id= "SiteName" /></TD>
    </Tr>
    <Tr>
        <TD colspan= "2">
            <input type= "Send" id= "CreateSiteButton" værdi= "Opretter webstedet" />
        </TD>
    </Tr>
</tabel>
</Center>

<script src="../Plugins/jQuery-1.11.0.min.js"></script>

<script>
varians CreateSiteLogicContainer = {

    createSiteData: {
            "parametre": {
                __metadata: { "type": "SP.WebInfoCreationInformation" },
                URL-adresse: "Paultest1",
                Titel: "Paultest1",
                Beskrivelse: "resten-skabte web af Paul!",
                Sprog: 1033,
                Webstedsskabelonen: "sts",
                UseUniquePermissions: falsk
            }
    },

    createSite: funktion () {

        jQuery.support.cors = True;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.Ajax({
            URL-adresse: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            metode: "POST",

            overskrifter: {
                "acceptere": "ansøgning/json; OData = verbose",
                "content-type": "ansøgning/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            succes: funktion () { alarm("succes"); },
            fejl: funktion () { alarm("fejl"); }

        });
    },

    wireUpForm: funktion () {
        $("#CreateSiteButton").Klik på(funktion () {
            alarm("Ved at prøve og oprette webstedet.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Når det lykkes, du får en JSON pakke som svar på denne:

image

Min centrale tanker og læringer fra denne omfatter:

  • Denne fremgangsmåde bruger jQuery.  I mit tilfælde, mit jQuery biblioteket er beliggende i ".../ plugins. "  Du vil gerne ændre det til at pege på din foretrukne JQ placering.
  • Du kan kopiere og indsætte det hele kodestykket i webdelen Indholdsredigering på en side og skal det fungere bare fint.  Du ønsker at ændre slutpunktet for API-kald og sørg for du reference JQ korrekt.
  • URL-adressen er i forhold til din API slutpunkt.  I mit tilfælde, Det er at oprette underordnede websteder under https://bigapplesharepoint.com
  • Du behøver ikke at give en indhold-længde. Nogle blogindlæg og MSDN dokument indebærer, at du gør, men der skete for mig automatisk, som jeg formoder bliver håndteret af $.ajax opkaldet, selv.
  • Denne linje er påkrævet for at undgå en "forbudte" svar: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Der er andre måder at gøre det, men det er ret nice.  Jeg har mistet linket til blog, leveres denne genvej.  H/T til dig, mystiske blogger!

Held og lykke og håber det hjælper nogen.

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Overvinde irriterende Problem med Relative URL-adresser i SharePoint rask indlede

Jeg ønskede at tilføje et link til hurtig start navigation forleden og SharePoint fortalte mig:

image

Ren tekstversion af der er:

Sikre, at Webadressen er gyldig og begynder med enten et gyldigt tegn (et nummertegn (#) eller skråstreg (/)) eller en gyldig understøttet protokol (for eksempel, ' http://’, ' https://’, ' fil://’, ' ftp://’, ' mailto:’, «Nyheder:’).

"Blech og pox!"Jeg sagde.

En løsning til dette er at bruge JavaScript til at finde en kendt link i den rask indlede og tilsidesætte sin opførsel.

At teste dette, føje et nyt link til webstedet test thusly:

image

Jeg brugte jQuery. At løse det, få nogle JavaScript og jQuery til siden ved hjælp af din foretrukne teknik og med en linje kode på denne:

 

$(dokument).klar til( funktion () {

    $("en:indeholder("Test URL udskiftning")").Klik på(funktion () { alarm("ændrede Klik adfærd!"); tilbagevenden falsk;});

});

Og Bob er din onkel.

JQuery selector finder hver <en> Tag, der har "Test URL udskiftning" i sit navn. Du kan finde-tune, afhængigt af din link og sådan.

Af .click(funktion() tilsidesætter uanset SharePoint ville have gjort, når brugeren klikker på. Sørg for, at du "returnerer false" eller andet, det vil gøre dit kram og derefter prøve at href ting også, der er næsten helt sikkert ikke dit mål.

Dette blev gjort og test i et SharePoint online miljø men bør arbejde godt i 2010 og tidligere for.

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og enkel: SharePoint resten kalder kun returnerer 100 Poster

Jeg har arbejdet på et offentligt modstående websted for min SharePoint praksis her i New York og det bruger en masse JavaScript og resten opkald til at vise indhold.

Under hovedlinjen udvikling, Jeg oprette en lille datasæt med lige 10 eller så rækker i en brugerdefineret liste og min resten opfordrer alle trak derfra.  En gang jeg stødte op på listen for at have et par hundrede rækker af data til at teste for forventede vækst, Jeg fandt, at jeg fik præcis 100 rækker, der returneres tilbage på min hvile opkald.

Dette er en meget simpel ting at adresse.  I mit tilfælde (og jeg tror i de fleste tilfælde), standard resten opkald til SharePoint (og muligvis som en industri standard?) tilbagevenden 100 rækker.  At vende tilbage mere end standard, Brug parameteren $top på dit opkald, som i:

FÅ /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/elementer?$Vælg = ID,Titel,Kategorier/titel,Blog_x0020_Author/titel,DatePublished,BlogSummary&$Udvid = Blog_x0020_Author,Kategorier&$filter =&$Top = 9999

Jeg tog 9999 i dette tilfælde da jeg ved at growth-wise, der vil ikke være mere end 200 eller så rækker føjes til denne liste i et år.  Hvis det bliver klodset, Vi kan gennemføre nogle personsøgning på vej.

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og enkel: Løse "Ugyldig URL-Parameter” problemet med UpdateListItems i lists.asmx

Når du arbejder med UpdateListItems via lists.asmx, Det er let at generere en fejl:

Ugyldig URL-Parameter.

Den webadresse, der indeholder en ugyldig kommando eller værdi. Tjek venligst URL'EN igen.

Du kan få denne fejl, når du glemmer at medtage ID i den liste over felter for at opdatere.  Dette, ligesom mange af disse SP webtjenester, er en smule ulogisk, da du skal medtage ID i attributten ID af den <Metode> element.  Og du er ikke opdateret ID og sandsynligvis aldrig vil i første omgang.

Denne SOAP-konvolutten fungerer:

<soapenv:Konvolut xmlns:soapenv =' http://schemas.xmlsoap.org/SOAP/Envelope/'>
  <soapenv:Organ>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/SOAP/'>                     
      <Listenavn>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</Listenavn>                     
        <opdateringer>                     
         <Batch VedFejl ="Fortsæt">
          <Metode ID ="1" Cmd ="Update">
            <Feltet navn ="CooperativeLock">låst!</Felt>
            <Feltet navn ="ID">1</Felt>
          </Metode>
        </Batch>                     
        </opdateringer>                
      </UpdateListItems>             
  </soapenv:Organ>         
</soapenv:Konvolut>

Hvis du strip ud id-feltreference så får du meddelelsen irriterende "Ugyldig URL-parameter".

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin