arquivos Mensais: Fevereiro 2014

Como especificar as pessoas como um escopo de pesquisa / Fonte de conteúdo usando o SharePoint 2013 API REST

Tinha motivo para trabalhar com o SharePoint 2013 API de pesquisa através de resto pela primeira vez. Eu queria procurar pessoas, Não de documentos. A chave aprender aqui é que você especificar conteúdas fontes via seu GUID (ou, pelo menos neste caso). O trecho a seguir jQuery mostra como:

    loadExpertsAsync: função() {

        jQuery.support.cors = verdadeiro;

        $.Ajax({
            URL: Isso.CreateFullApiUrl() +
                "?QueryText = 'portais'&SourceID = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selecione Propriedades ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Habilidades,AboutMe,Interesses,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&RowLimit = 99",
            Método: "Obter",
            cabeçalhos: { "Aceitar": "application/json; OData = verbose" },
            cache: falso,
            sucesso: função (resultado) {

No meu caso, Estou concorrendo a API contra SharePoint online. Para obter o GUID, Eu segui estes passos:

  1. Acessar a central do administrador do SharePoint
  2. Selecione "Pesquisar" de navegação a mão esquerda
  3. Selecione "gerenciar fontes de resultado"
  4. Selecione "Resultados da população Local"
  5. Olhe a URL.

Parecia a minha URL:

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

O parâmetro sourceid é o que funcionou para mim.

(Eu entendo que o sourceid pode realmente ser um tipo de coisa permanente com SP, mas eu vou sempre verificar qualquer maneira 🙂 ).

</fim>

undefinedSubscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Exemplo do SharePoint resto chamadas

Aqui é um conjunto de chamadas de resto de amostra que trabalha para mim e pode ajudá-lo também. A partir de 02/2014, existem dois exemplos

  1. Referência a uma coluna com espaços em seu nome
  2. Referência a uma coluna de seleção múltipla
  3. Realizar uma pesquisa de pessoas através do resto

 

Vou acrescentar a isto como o tempo passa.

Aqui estão algumas tintas úteis que encontrei também:

Referência a uma coluna com espaços em seu nome

Criar uma lista personalizada com uma coluna chamada "Autor do Blog" (espaço entre o Blog e autor).

O $select para fazer referência a essa coluna é:

image

Basta substituir o espaço com "_x0020_". Vemos o _x0020_ em muitos exemplos em toda a Internet e o resto não é diferente.

Se você não faz isso, é capaz de receber uma mensagem de erro assim:

A expressão “Blog do autor” Não é válido.

Bastante fácil.

Referência a uma coluna de pesquisa múltipla seleção

Configurar:

  1. Criar uma lista personalizada chamada categorias.
  2. Adicionar algumas categorias. Eu adicionei categorias desta forma:image
  3. Criar outra lista personalizada chamada MockBlog e adicionar categorias como uma coluna de lista de seleção múltipla (ou coluna do site se você assim).

Adicionar alguns itens à sua lista de Mockblog e você está pronto.

Uma chamada de estilo Ajax utilizando jQuery será parecido com isto:

  = serverUrl "/_api/web/listas/GetByTitle('MockBlog')/itens" +
             "?$Selecione = título,Categorias/título,Blog_x0020_Author/título" + 
             "&$expandir = Blog_x0020_Author,Categorias";

Vamos contar SharePoint "dá-me o título para todas as categorias (Categorias/título). Obter os valores reais para Título por $expandira lista de categorias ing." (Meu parafraseando RESTful é provavelmente muito solto, Mas isso como eu estou interpretando-).

Se você estiver fazendo isso via JavaScript e usando o Fiddler para olhar para a saída, Você recebe algo como isto em troca:

 

image

(O acima é um objeto JSON)

Realizar uma pesquisa de pessoas através do resto

Eu postei sobre isso separadamente. A chave é para especificar um parâmetro sourceid cujo valor é o GUID da fonte de conteúdo Local pessoas. (Fontes de conteúdo costumavam ser chamado de escopos e Ah-meu tanto para ligar tudo um escopo para mim não é!).

Leia mais sobre ele aqui: http://www.mstechblogs.com/paul/?p=10385

 

</fim>

undefinedSubscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Rápido e fácil: Criar um Site do SharePoint usando o resto

Há um monte de recursos em torno do que mostram como fazer isso, Mas não consegui encontrar um link abrangente que, Então, aqui estamos....

Você pode criar um site do SharePoint usando a API REST.  Aqui está um exemplo totalmente cozido:

<!--
    SiteRequestForm.html: Coletar informações e criar um site para o usuário.
-->

<Centro>
<tabela>
    <TR>
        <TD>Nome do site:</TD>
        <TD><entrada tipo= "texto" nome= "NomeDoSite" ID= "NomeDoSite" /></TD>
    </TR>
    <TR>
        <TD ColSpan= 2"">
            <entrada tipo= "submit" ID= "CreateSiteButton" valor= "Criar o Site" />
        </TD>
    </TR>
</tabela>
</Centro>

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

<script>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parâmetros": {
                __metadata: { "tipo": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Título: "Paultest1",
                Descrição: "web resto-criado por Paul!",
                Língua: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: falso
            }
    },

    createSite: função () {

        jQuery.support.cors = verdadeiro;

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

            cabeçalhos: {
                "Aceitar": "application/json; OData = verbose",
                "content-type": "application/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            dados: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            sucesso: função () { alerta("o sucesso"); },
            erro: função () { alerta("erro"); }

        });
    },

    wireUpForm: função () {
        $("#CreateSiteButton").Clique em(função () {
            alerta("Prestes a experimentar e criar o site.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Quando bem sucedida, se um pacote JSON em resposta assim:

image

Meus pensamentos chaves e aprendizados desta incluem:

  • Essa abordagem usa jQuery.  No meu caso, minha biblioteca jQuery situa-se em ".../ plugins. "  Você vai querer mudar isso para seu local favorito de JQ.
  • Você pode copiar e colar o trecho inteiro em uma Web Part do Editor de conteúdo em uma página e deve funcionar bem.  Você vai querer mudar o ponto de extremidade da chamada de API e certifique-se de que fazer referência JQ corretamente.
  • O URL é relativo para o ponto de extremidade de sua API.  No meu caso, é criar subsites por baixo https://bigapplesharepoint.com
  • Você não precisa fornecer um conteúdo-comprimento. Alguns posts e MSDN documento implica que você faz..., Mas aconteceu-me automaticamente, que presumo que está sendo manipulado pela chamada AJAX $ em si.
  • Esta linha é necessária para evitar uma resposta de "proibida": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Existem outras maneiras de fazê-lo, Mas isso é muito bom.  Eu perdi o link para o blog que forneceu este atalho.  H/T para você, blogueiro misterioso!

Boa sorte e espero que isso ajude alguém.

</fim>

undefinedSubscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Superar o problema chato com Urls relativas em SharePoint Quick Launch

Eu queria adicionar um link para a navegação de lançamento rápido no outro dia e SharePoint me disse:

image

Versão de texto puro do que é:

Certifique-se de que o URL é válido e começa com qualquer um caractere válido (um sinal de número (#) ou barra (/)) ou um válido suporte protocolo (por exemplo, ' http://’, ' https://’, ' arquivo://’, ' ftp://’, ' mailto:’, «Notícias:’).

"Blech e varíola!"Eu disse.

Uma solução para isso é usar JavaScript para encontrar um link conhecido no lançamento rápido e substituir o comportamento de.

Para testar isso, Adicionar um novo link para o seu site de teste desta forma:

image

Eu usei o jQuery. Para resolvê-lo, pegar um pouco de JavaScript e jQuery para a página usando sua técnica favorita e com uma linha de código como este:

 

$(documento).pronto( função () {

    $("uma:contém('Substituição de URL de teste')").Clique em(função () { alerta("comportamento de clique alterados!"); Voltar falso;});

});

E Bob é seu tio.

O seletor do jQuery encontra cada <uma> marca que tem a "Substituição de URL de teste" em seu nome. Você pode querer encontrar-melodia que dependendo do seu link e tal.

As meretrizes(função() Substitui o SharePoint teria feito quando o usuário clicou. Certifique-se "retorna false" ou então vai fazer suas coisas e depois tentar a coisa href também, quase de certeza que não é seu objetivo.

Isso foi feito e teste em um ambiente de SharePoint online mas deve funcionar bem em 2010 e mais cedo demais.

</fim>

undefinedSubscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Rápido e simples: SharePoint resto chamar só retorna 100 Registros

Tenho trabalhado em um site público enfrentam para a minha prática de SharePoint aqui em Nova Iorque e ele usa um monte de chamadas JavaScript e o resto para mostrar o conteúdo.

Durante o desenvolvimento da linha principal, Criar um pequeno conjunto de dados com apenas 10 ou então linhas em uma lista personalizada e todas as minhas chamadas de resto tirou de lá.  Uma vez eu cruzei a lista para ter umas 100 linhas de dados para testar para o crescimento esperado, Eu achei que eu estava ficando exatamente 100 linhas retornadas na minhas chamadas REST.

Isso é uma coisa muito simples para o endereço.  No meu caso (e eu acredito que na maioria dos casos), o padrão resto chama para SharePoint (e possivelmente como um padrão da indústria?) Voltar 100 linhas.  Para retornar mais do que o padrão, Use o parâmetro $top no seu telefonema, como em:

OBTER /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/itens?$Selecione = ID,Título,Categorias/título,Blog_x0020_Author/título,DatePublished,BlogSummary&$expandir = Blog_x0020_Author,Categorias&$filtro =&$Top = 9999

Eu escolhi 9999 Neste caso já que sei que growth-wise, Não haverá mais de 200 ou então linhas adicionadas a esta lista em um ano.  Se torna-se desajeitado, Podemos implementar uma paginação na estrada.

</fim>

undefinedSubscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Rápido e simples: Resolver "parâmetro de URL inválido” problema com UpdateListItems em lists. asmx

Quando trabalhando com UpdateListItems via Lists. asmx, é fácil gerar o erro:

Parâmetro de URL inválido.

A URL fornecida contém um comando inválido ou o valor. Por favor verifique a URL novamente.

Você pode obter este erro quando você esquecer de incluir o ID na lista de campos para atualizar.  Isso, como um monte de SP, esses serviços da web, é um pouco intuitivo, pois você precisa incluir o ID no atributo ID do <Método> elemento.  E você não está atualizado ID e provavelmente nunca mais quero em primeiro lugar.

Este envelope SOAP funciona:

<soapenv:Envelope xmlns:soapenv =' http://schemas.xmlsoap.org/soap/envelope/'>
  <soapenv:Corpo>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/SOAP/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <atualizações>                     
         <Lote OnError ="Continuar">
          <Método ID ="1" Cmd ="Update">
            <Nome do campo ="CooperativeLock">trancado!</Campo>
            <Nome do campo ="ID">1</Campo>
          </Método>
        </Lote>                     
        </atualizações>                
      </UpdateListItems>             
  </soapenv:Corpo>         
</soapenv:Envelope>

Se você retirar a referência de campo ID, então você vai ter a irritante mensagem "Parâmetro de URL inválido".

</fim>

undefinedSubscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin