maandelijkse archieven: Februari 2014

Het opgeven van mensen als een zoekbereik / De bron van de inhoud met behulp van SharePoint 2013 REST API

Ik had reden om te werken met de SharePoint 2013 Search API via REST voor de eerste keer. Ik wilde om te zoeken naar personen, geen documenten. De sleutel leren hier is dat die u opgeeft inhoudsbronnen via de GUID (of op zijn minst in dit geval). De volgende jQuery fragment toont hoe:

    loadExpertsAsync: functie() {

        jQuery.support.cors = True;

        $.Ajax({
            URL: Dit.CreateFullApiUrl() +
                "?QueryText = 'sites'&sourceid = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Vaardigheden,AboutMe,Belangen,JobTitle,PastProjects,Afbeeldings-URL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            methode: "Toevoegen",
            headers: { "Accepteren": "application/json; odata = verbose" },
            cache: vals,
            succes: functie (resultaat) {

In mijn geval, I 'm running de API tegen SharePoint online. Om de GUID, Ik volgde deze stappen:

  1. Toegang tot de SharePoint admin center
  2. Selecteer 'zoeken' uit de linker navigatie
  3. Selecteer "Resultaat bronnen beheren"
  4. Selecteer "Lokale bevolking resultaten"
  5. Kijk naar de URL.

Mijn URL keek iets als:

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

De parameter sourceid is wat werkte voor mij.

(Ik begrijp dat de sourceid daadwerkelijk kan een soort permanente ding met SP, maar ik zal altijd te controleren hoe dan ook šŸ™‚ ).

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

In het volgende voorbeeld SharePoint REST oproepen

Hier is een set van monster REST oproepen die werken voor mij en kan u helpen zo goed. Als van 02/2014, there are two examples šŸ™‚

  1. Verwijzen naar een kolom met ruimten In zijn naam
  2. Verwijst naar een meervoudige selectie kolom
  3. Een zoekopdracht mensen via REST

 

Ik zal toevoegen aan dit naarmate de tijd verstrijkt.

Hier zijn sommige nuttige inkten die ik zo goed heb gevonden:

Verwijzen naar een kolom met ruimten In zijn naam

Ik maken een aangepaste lijst met een kolom met de naam "blogauteur" (ruimte tussen Blog en auteur).

De $select om te verwijzen naar die kolom is:

image

Simpelweg vervangen naar de ruimte met "_x0020_". We zien de _x0020_ in veel voorbeelden over de internets en REST is niet anders.

Als u dat niet doet, je bent aansprakelijk om een foutmelding als deze:

De expressie “Blog Auteur” is niet geldig.

Gemakkelijk genoeg.

Verwijst naar een meervoudige selectie opzoekkolom

Instellen:

  1. Een aangepaste lijst met de naam Categorieƫn maken.
  2. Sommige categorieƫn toevoegen. Ik heb toegevoegd categorieƫn thusly:image
  3. Maak een andere aangepaste lijst genoemd MockBlog en categorieƫn toevoegen als een meervoudige selectie lijstkolom (of sitekolom als dat is hoe u rollen).

Sommige items toevoegen aan uw lijst met Mockblog en je bent klaar.

Een Ajax stijl gesprek met behulp van jQuery ziet er iets als dit:

serverUrl  = "/_api/web/lijsten/GetByTitle('MockBlog')/items" +
             "?$Selecteer = Titel,Categorieƫn/titel,Blog_x0020_Author/titel" + 
             "&$Vouw = Blog_x0020_Author,Categorieƫn";

We vertellen SharePoint "Geef me de titel voor alle categorieƫn (Categorieƫn/titel). Krijgen van de werkelijke waarden voor Titel door $uit te breidenING de lijst Categorieƫn." (Mijn rustgevende parafrase is waarschijnlijk vrij losse, maar dit hoe ik ben interpretatie van het).

Als u dit doet via JavaScript en met behulp van Fiddler om te kijken naar de output, in ruil daarvoor krijg je zoiets als dit:

 

image

(Het bovenstaande is een JSON-object)

Een zoekopdracht mensen via REST

Ik geblogd over dit afzonderlijk. De sleutel is om een parameter van de sourceid waarvan de waarde de GUID van de bron van de lokale bevolking inhoud is opgeven. (Inhoudsbronnen gebruikt te worden genoemd scopes en het is mijn-oh-mijn zo moeilijk niet te roepen alles een scope voor mij!).

Lees hier meer over het: http://www.mstechblogs.com/paul/?p=10385

 

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snel en eenvoudig: Een SharePoint-Site met behulp van REST maken

Er zijn een heleboel middelen rond die laten zien hoe dit te doen, maar ik kon het niet vinden een uitgebreide Ga-naar-link, Dus hier zijn we.

U kunt een SharePoint-site met behulp van de REST API.  Hier is een volledig gebakken voorbeeld:

<!--
    SiteRequestForm.html: Informatie verzamelen en een site maken voor de gebruiker.
-->

<Center>
<tabel>
    <tr>
        <TD>Naam van de site:</TD>
        <TD><input type= "tekst" naam"SiteName =" id"SiteName =" /></TD>
    </tr>
    <tr>
        <TD ColSpan= "2">
            <input type= "submit" id"CreateSiteButton =" waarde= "Maak de Site" />
        </TD>
    </tr>
</tabel>
</Center>

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

<script>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parameters": {
                __metadata: { "type": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Titel: "Paultest1",
                Beschrijving: "rest-gemaakt web door Paul!",
                Taal: 1033,
                WebTemplate: "St",
                UseUniquePermissions: vals
            }
    },

    createSite: functie () {

        jQuery.support.cors = True;

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

            headers: {
                "accept": "application/json; odata = verbose",
                "content-type": "application/json;odata = verbose",
                "X-RequestDigest": $(#__REQUESTDIGEST"").Val()
            },

            gegevens: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            succes: functie () { waarschuwing("succes"); },
            fout: functie () { waarschuwing("fout"); }

        });
    },

    wireUpForm: functie () {
        $("#CreateSiteButton").Klik op(functie () {
            waarschuwing("Ongeveer om te proberen en de site hebt gemaakt.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Wanneer succesvol, krijg je een pakje JSON in reactie als dit:

image

Mijn belangrijkste gedachten en lessen uit deze opnemen:

  • Deze aanpak maakt gebruik van jQuery.  In mijn geval, mijn jQuery bibliotheek bevindt zich "../ plugins. "  U zult willen veranderen om te wijzen op uw favoriete JQ locatie.
  • U kunt kopiĆ«ren en plakken dat hele fragment in een webonderdeel Inhoudseditor op een pagina en het zou moeten werken prima.  U zult willen wijzigen het eindpunt van de API-aanroep en zorg ervoor dat u verwijst naar JQ correct.
  • De URL is ten opzichte van uw API eindpunt.  In mijn geval, het het creĆ«ren van subsites onder https://bigapplesharepoint.com
  • U hoeft niet te bieden een inhoud-lengte. Sommige blog posts en MSDN document impliceert dat jij, maar gebeurde voor mij automatisch, die ik neem aan dat wordt afgehandeld door de $.ajax aanroep zelf.
  • Deze regel is nodig om te voorkomen dat een "verboden" antwoord: "X-RequestDigest": $(#__REQUESTDIGEST"").Val().  Er zijn andere manieren om het te doen, maar dit is vrij aardig.  Ik heb de link naar blog die deze snelkoppeling verloren.  H/T aan u, mysterieuze blogger!

Veel geluk en hoop dat die dit helpt iemand uit.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Overwinnen van vervelende probleem met relatieve URL's in SharePoint Quick Launch

Ik wilde een link toevoegen naar de vlug barkas navigatie de andere dag en SharePoint vertelde me:

image

Pure tekstversie van die is:

Ervoor zorgen dat de URL geldig is en met ofwel een geldig teken begint (een hekje (#) of schuine streep naar voren (/)) of een geldige ondersteund protocol (bijvoorbeeld, ' http://ā€™, ' https://ā€™, ' bestand://ā€™, ' ftp://ā€™, ' mailto:ā€™, ' Nieuws:ā€™).

"Blech en pox!"Ik zei.

Een alternerende actie aan dit is het gebruik van JavaScript te vinden van een bekende link in de werkbalk Snel starten en haar gedrag te overschrijven.

Om dit te testen, een nieuwe koppeling toevoegen aan uw testsite thusly:

image

Ik gebruikte jQuery. Te lossen, Krijg sommige JavaScript en jQuery naar de pagina met behulp van uw favoriete techniek en met een lijn van code zoals dit:

 

$(document).klaar( functie () {

    $("een:bevat('Test URL vervanging')").Klik op(functie () { waarschuwing("gewijzigde klik gedrag!"); terugkeer vals;});

});

En Bob's uw oom.

De jQuery selector vindt elke <een> label die "Test URL vervanging" in haar naam heeft. U kunt zoeken-melodie die afhankelijk van uw link en dergelijke.

De .Klik(functie() overschrijft wat SharePoint zou hebben gedaan wanneer de gebruiker heeft geklikt. Zorg ervoor dat u 'return false' of anders zal het doen van je spullen en dan proberen aan de href ding ook, Wat is vrijwel zeker niet uw doel.

Dit werd gedaan en test in een SharePoint online-omgeving maar moet werken goed in 2010 en eerder te.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snelle en eenvoudige: SharePoint REST gesprek enige Returns 100 Records

Ik heb gewerkt op een openbare geconfronteerd met web site voor mijn SharePoint praktijk hier in New York en het maakt gebruik van veel JavaScript en REST oproepen naar inhoud weergeven.

Tijdens de mainline ontwikkeling, Ik maak een kleine dataset met net 10 of zo rijen in een aangepaste lijst en mijn aanroepen REST alle trok vanaf daar.  Eens ik gestoten op de lijst dat een paar honderd rijen met gegevens om te testen voor verwachte groei, Ik vond dat ik kreeg precies 100 rijen geretourneerd terug op mijn aanroepen REST.

Dit is een heel simpel ding naar adres.  In mijn geval (en ik denk dat in de meeste gevallen), de standaard REST roept naar SharePoint (en eventueel als een industriestandaard?) terugkeer 100 rijen.  Om terug te keren meer dan de standaard, Gebruik de parameter $top voor uw oproep, Als in:

KRIJGEN /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/items?$Selecteer = ID,Titel,Categorieƫn/titel,Blog_x0020_Author/titel,DatePublished,BlogSummary&$Vouw = Blog_x0020_Author,Categorieƫn&$filter =&$Top = 9999

Ik pakte 9999 in dit geval omdat ik weet dat growth-wise, Er zal niet meer dan 200 of zo rijen toegevoegd aan deze lijst in een jaar.  Als het wordt logge, We kunnen sommige wisselbestand op de weg.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snelle en eenvoudige: "Ongeldige URL-Parameter oplossen” probleem met UpdateListItems in lists.asmx

Bij het werken met UpdateListItems via lists.asmx, het is gemakkelijk voor het genereren van de fout:

Ongeldige URL-Parameter.

De URL bevat een ongeldige opdracht of waarde. Controleer of de URL weer.

U kunt deze fout krijgen wanneer u vergeet te vermelden-ID in de de lijst met velden om te werken.  Dit, net als een heleboel deze SP webservices, is een beetje contra-intuĆÆtief omdat u moet omvatten de ID in het ID-kenmerk van de <Methode> element.  En je bent niet bijgewerkt ID en waarschijnlijk nooit willen in de eerste plaats.

Deze SOAP-envelop werkt:

<soapenv:Envelop xmlns:soapenv =' http://schemas.xmlsoap.org/soap/envelope/'>
  <soapenv:Lichaam>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/soap/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <updates>                     
         <Batch OnError ="Blijven">
          <Methode ID ="1" Cmd ="Update">
            <Veldnaam ="CooperativeLock">vergrendeld!</Veld>
            <Veldnaam ="ID">1</Veld>
          </Methode>
        </Batch>                     
        </updates>                
      </UpdateListItems>             
  </soapenv:Lichaam>         
</soapenv:Envelop>

Als u uit de veldverwijzing ID strippen dan krijg je het vervelend bericht "Ongeldig URL-parameter".

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin