คลังเก็บหมวดหมู่: SharePoint Web Services

วิธีการระบุคนเป็นขอบเขตการค้นหา / แหล่งเนื้อหาโดยใช้ SharePoint 2013 เหลือ API

มีเหตุผลทำงานร่วมกับ SharePoint 2013 ค้นหา API ผ่านเหลือเป็นครั้งแรก. อยากจะหาคน, เอกสารไม่. คีย์ที่เรียนที่นี่เป็นที่ที่คุณระบุแหล่งเนื้อหาผ่าน GUID ของ (หรืออย่างน้อยในกรณีนี้). ส่วนย่อยของโค้ดต่อไปนี้ jQuery แสดงวิธี:

    loadExpertsAsync: ฟังก์ชัน() {

        jQuery.support.cors = จริง;

        $.อาแจ็กซ์({
            url: นี้.CreateFullApiUrl() +
                "?querytext = 'พอร์ทัล'&รหัสแหล่งข้อมูล = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,ทักษะ,AboutMe,สนใจ,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            วิธีการ: "รับ",
            หัวข้อ: { "ยอมรับ": "แอพลิเคชัน/เจซัน; odata = verbose" },
            แคช: เท็จ,
            ประสบความสำเร็จ: ฟังก์ชัน (ผล) {

ในกรณีของฉัน, ฉันทำงาน API กับ SharePoint ออนไลน์. รับ GUID, ผมตามขั้นตอนเหล่านี้:

  1. เข้าศูนย์ผู้ดูแล SharePoint
  2. เลือก "ค้นหา" จากการนำทางซ้ายมือ
  3. เลือก "จัดการแหล่งผล"
  4. เลือก "ประชาชนผลลัพธ์"
  5. ดูที่ URL.

URL ของฉันดูเหมือน:

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

พารามิเตอร์รหัสแหล่งข้อมูลเป็นที่ทำงานให้ฉัน.

(ผมเข้าใจว่า รหัสแหล่งข้อมูลจริงอาจจะเรียงลำดับของสิ่งถาวรกับ SP, but I’ll always check anyway 🙂 ).

</สิ้นสุด>

undefinedสมัครสมาชิกไปยังบล็อกของฉัน.

ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin

Lists.asmx, GetListItems และโฟลเดอร์

ฉันได้ทำงานวิจัยบางบุคคลวันนี้รอบบริการเว็บ list.asmx ให้เป็นส่วนหนึ่งของ SharePoint 2010 (และรุ่นก่อนหน้า).  เธอได้รับในรายการที่โฟลเดอร์ราก (รวมทั้งชื่อของ sub-folders), แต่ไม่ได้รับสินค้าใน sub-folders  ไม่บางอย่างรอบคอบในการ internets และคำถามทั่วไปอย่างแปลกใจ  ยัง, ฉันไม่สามารถได้รับคำตอบสำหรับคำถามที่วิดี, "ถ้ารู้ว่าโฟลเดอร์, ฉันรับสินค้าในโฟลเดอร์?”  จะซื่อสัตย์, ไม่ได้พยายามทั้งหมดที่หนักเนื่องจากผมได้ต้องการรูปหนึ่งนี้ออกด้วยตัวเองสำหรับในขณะ ยิ้ม.

การตั้งค่านี้, ไซต์มีชื่อว่า "สถานการณ์ของบล็อก" และรายการแบบกำหนดเองที่ชื่อว่า "กำหนดเองรายการกับโฟลเดอร์ย่อย" สร้าง  สร้างโฟลเดอร์ชื่อแล้ว:

  • ปี 2005
  • ปี 2006
  • ปี 2007

เพิ่มเพียงไม่กี่รายการไปที่โฟลเดอร์ "ปี 2549"  นี่คือสิ่งที่มีลักษณะเหมือน:

image

เพื่อนของฉันไม่ได้เขียน C# โค้ด แต่แทนที่จะ ใช้ Java, ดังนั้น ละครซองจดหมายถูกอะไรเธอจริง ๆ ต้อง  รับที่, ฉันเขียนบิตของ jQuery และใช้ fiddler รับสนทนา HTTP ที่แท้จริงแล้ว.

นี่คือ jQuery เกี่ยวข้อง (คัดลอกรหัสลงด้านล่างหากคุณต้องการคัดลอก/วาง):

image

พวกเขาแรกคีย์คือการ รวมทั้งสองแบบ <queryOptions> และ <QueryOptions> โหนด  ปุ่มที่สองคือที่ <โฟลเดอร์> โหนดคือ URL ที่ไคลเอ็นต์เข้า.

อาจจะมีวิธีอื่น ๆ ที่ได้รับนี้, แต่นี้ทำงานได้ดีสำหรับฉันเมื่อใช้ jQuery.

นี่คือละครซองจดหมายสำหรับด้านบน:

<soapenv:Xmlns ซองจดหมาย:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:เนื้อความ>
    <GetListItems xmlns =’
http://schemas.microsoft.com/sharepoint/soap/’>
      <listName>รายการที่กำหนดเองกับโฟลเดอร์ย่อย</listName>
      <viewFields>  
        <ViewFields>
          <ชื่อ FieldRef =' ชื่อเรื่อง’ />
          <ชื่อ FieldRef ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <โฟลเดอร์>
http://demoserver1/บล็อก รายการสถานการณ์/รายการ/กำหนดเองกับ Sub โฟลเดอร์/ปี 2549</โฟลเดอร์>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:เนื้อความ>
</soapenv:ซองจดหมาย>

ตัวอย่างและการอภิปรายรอบนี้มากมายทำให้ฉันเชื่อว่า ทั้งหมดที่ต้องแก้ไข <QueryOptions> และระบุชื่อโฟลเดอร์  สำหรับฉัน, ฉันต้องการทั้งสองตัดนั้นภายใน <queryOptions> ตลอดจนระบุ URL ที่ครบถ้วนสำหรับการ <โฟลเดอร์> โหนด.

นี่คือการตั้งค่าของ jQuery AJAX:

$(เอกสาร).พร้อม(ฟังก์ชัน() {
       var soapEnv =
           "<soapenv:Xmlns ซองจดหมาย:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:เนื้อความ> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/sharepoint/soap/’> \
                       <listName>รายการที่กำหนดเองกับโฟลเดอร์ย่อย</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <ชื่อ FieldRef =' ชื่อเรื่อง’ /> \
                              <ชื่อ FieldRef ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <โฟลเดอร์>http://demoserver1/Blogging รายการสถานการณ์/รายการ/กำหนดเองกับ Sub โฟลเดอร์/ปี 2549</โฟลเดอร์> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:เนื้อความ> \
           </soapenv:ซองจดหมาย>";

</สิ้นสุด>

สมัครสมาชิกไปยังบล็อกของฉัน.

ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin

Lists.asmx, GetList และ "ค่าไม่สามารถเป็น null”

พบวันนี้ที่ GetList() วิธีการใน lists.asmx มีบริการเว็บเรียกระมัดระวัง หรือมีแนวโน้มที่จะโยนความลึกลับยกเว้น "ค่าไม่สามารถเป็น null" (และที่จะสมมติว่า คุณสามารถเรียกดูผ่านข้อผิดพลาดทั่วไปยิ่งแย่ลง, "ข้อยกเว้นของชนิด ' Microsoft.SharePoint.SoapServer.SoapServerException’ เกิดขึ้น")  โดยเฉพาะอย่างยิ่ง, พบว่า คุณไม่สามารถให้ชนิดใด ๆ ของคำนำหน้ากับวิธี GetList  ส่วนย่อยของ jQuery ดังต่อไปนี้แสดงให้เห็นถึงจุด:

image

ถ้าคุณทำเช่นนั้น, บริการเว็บการตอบสนอง ด้วยการ "ค่าไม่สามารถเป็น null" ตามนี้ พู้ทำเล่น-ให้เสียงบรรยาย HTTP:

<?xml version = "1.0" เข้ารหัส = "utf-8"?>
  <สบู่:ซองจดหมาย
     xmlns:สบู่ ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/ 2001/XMLSchema-อินสแตนซ์
     xmlns:xsd ="
http://www.w3.org/ 2001/XMLSchema">

  <สบู่:เนื้อความ>
    <สบู่:ข้อบกพร่อง>
      <faultcode>สบู่:เซิร์ฟเวอร์</faultcode>
      <faultstring>
        ข้อยกเว้นของชนิด ' Microsoft.SharePoint.SoapServer.SoapServerException’ เกิดขึ้น.
      </faultstring>
      <รายละเอียด>
        <errorstring xmlns ="
http://schemas.microsoft.com/sharepoint/soap/">
ค่าไม่สามารถเป็น null.
        </errorstring>
      </รายละเอียด>
    </สบู่:ข้อบกพร่อง>
  </สบู่:เนื้อความ>
</สบู่:ซองจดหมาย>

แน่นอน, คุณอาจจะไม่เพิ่มคำนำหน้าว่า "s0" ด้วยตนเอง, แต่เครื่องมือบางชนิดมีแนวโน้มที่ (เช่นอุปราคา).

นี่คือความสับสนทั้งหมด / frustrating เนื่องจากวิธีการอื่น ๆ ทนนำหน้า  สำหรับอินสแตนซ์, ที่ GetListCollection วิธีไม่รังเกียจถ้าจะได้รับสิ่ง, แม้จะ มีหน้าที่พูดจาเหลวไหลเช่น "xyzzy":

image

นี้ "ค่าไม่สามารถเป็น null" ดูเหมือนว่าค่อนข้างปกติ lists.asmx เพื่อหวังว่านี้จะช่วยให้คนออกในอนาคต.

</สิ้นสุด>

สมัครสมาชิกไปยังบล็อกของฉัน.

ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin