ארכיון קטגוריה: שירותי אינטרנט של SharePoint

כיצד לציין אנשים כמו טווח חיפוש / מקור תוכן באמצעות SharePoint 2013 השאר API

הייתה לי סיבה לעבוד עם ה-SharePoint 2013 Api של חיפוש דרך כל השאר בפעם הראשונה. . רציתי לחפש אנשים, לא מסמכים. המפתח לומד כאן זה תציין מקורות תוכן באמצעות GUID שלה (או לפחות במקרה הזה). גזיר jQuery הבאה מציגה כיצד:

    loadExpertsAsync: פונקציה() {

        jQuery.support.cors = נכון;

        $.אייאקס({
            כתובת url: זה.CreateFullApiUrl() +
                "?querytext = "פורטלים"&sourceid = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,מייל העבודה,מיומנויות,AboutMe,תחומי עניין,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            שיטה: "לקבל",
            כותרות: { "קבל": "יישום/json; odata = מפורט" },
            מטמון: שווא,
            הצלחה: פונקציה (תוצאה) {

במקרה שלי, . אני רץ ה-API נגד SharePoint online. כדי לקבל את ה-GUID, עקבתי אחרי השלבים:

  1. גישה מרכז הניהוליים של SharePoint
  2. בחר "לחפש" של הניווט יד שמאל
  3. בחר "ניהול מקורות התוצאה"
  4. בחר "אנשים מקומיים תוצאות"
  5. תראה את כתובת ה-URL.

כתובת האתר שלי נראה. בערך:

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

הפרמטר sourceid הוא מה עבד בשבילי.

(אני מבין sourceid בפועל עשוי להיות משהו קבוע עם SP, but I’ll always check anyway 🙂 ).

</קצה>

undefinedמנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

Lists.asmx, GetListItems ותיקיות

אני עושה קצת מחקר עבור מישהו היום סביב שירות האינטרנט list.asmx במסגרת של SharePoint 2010 (וגירסאות קודמות).  היא הצליחה לקבל את רשימת הפריטים בתיקיית הבסיס (כולל שמות תיקיות המשנה), אך לא היתה אפשרות לקבל פריטים בתוך תיקיות המשנה.  אני עשיתי את חלקם מביטים למצות והיא שאלה נפוצה באופן מפתיע.  עדיין, ושאני לא יכול לקבל תשובה טובה לשאלה פשוטה, "אם אני מכיר את התיקיה, כיצד ניתן לקבל את הפריטים בתיקיה?”  והאמת, אני לא מנסה כל מה קשה מאז כבר רציתי דמות זו אחת החוצה בכוחות עצמי קצת חיוך.

לשם ביצוע פעולה זו, יצרתי באתר בשם "תרחישים בלוגים" ואת רשימה מותאמת אישית בשם "רשימה עם תת תיקיות מותאמות אישית".  מכן יצרת תיקיות בשם:

  • השנה 2005
  • השנה 2006
  • השנה 2007

הוספתי מספר פריטים לתיקיה "השנה-2006".  דבר זה נראה:

image

החבר שלי לכתוב קוד C # אבל במקום שימוש ב- Java, מעטפת ה-SOAP היה מה היא באמת צריך.  כדי לקבל את זה, אני כתב מעט jQuery, ואז השתמש כנר כדי לקבל את השיחה בפועל של HTTP.

הנה jQuery רלוונטיים (העתקתי את הקוד למטה מתחת אם ברצונך לבצע העתקה/הדבקה):

image

הם המפתח הראשון היא לכלול שני <queryOptions> ו <QueryOptions> צומת.  המפתח השני הוא כי <תיקיה> צומת הוא URL שאליה ללקוח יש גישה.

ייתכן שקיימות דרכים אחרות להשיג את זה, אבל זה עבד טוב עבורי בעת שימוש ב- jQuery.

הנה מעטפת ה-SOAP עבור לעיל:

<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/בלוגים תרחישים/רשימות/מותאם אישית ברשימה עם תת תיקיות/שנה 2006</תיקיה>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:הגוף>
</soapenv:מעטפה>

המון דוגמאות ודיון סביב זה הוביל אותי להאמין כי כל מה שדרוש לי היה <QueryOptions> וציין שם תיקיה.  בשבילי, אני זקוק לשני להקיף אותו בתוך <queryOptions> וכן לציין כתובת URL מלא <תיקיה> צומת.

הנה תוכנית ההתקנה של AJAX jQuery:

$(המסמך).מוכן(פונקציה() {
       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 תרחישים/רשימות/מותאם אישית ברשימה עם תת תיקיות/שנה 2006</תיקיה> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:הגוף> \
           </soapenv:מעטפה>";

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

Lists.asmx, GetList, "ערך אינו יכול להיות null”

גיליתי היום בהם GetList() שיטת ב lists.asmx שירות האינטרנט צריך להיקרא היטב או זה נוטה לזרוק מסתורי "ערך אינו יכול להיות null" יוצא מן הכלל (ואת כל זאת בהנחה שבאפשרותך לקבל אחרי הודעת שגיאה כללית גרוע, "חריגה מסוג ' Microsoft.SharePoint.SoapServer.SoapServerException’ המערכת התריעה.")  באופן ספציפי, מצאתי לא יכול לספק כל סוג של קידומת על שיטת GetList.  הגזיר jQuery שלהלן ממחיש את הנקודה:

image

אם תעשי זאת, שירות האינטרנט מגיב עם "ערך אינו יכול להיות null" לפי זה כנר-בתנאי פרוטוקול HTTP:

<?גירסת xml = "1.0" קידוד = "utf-8"?>
  <סבון:מעטפה
     xmlns:סבון ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/ 2001/סכימת Xml-מופע
     xmlns:xsd ="
http://www.w3.org/ 2001/סכימת Xml">

  <סבון:הגוף>
    <סבון:אשמתו>
      <faultcode>סבון:שרת</faultcode>
      <faultstring>
        חריגה מסוג ' Microsoft.SharePoint.SoapServer.SoapServerException’ נזרק.
      </faultstring>
      <פירוט>
        <errorstring xmlns ="
http://schemas.microsoft.com/sharepoint/soap/">
ערך אינו יכול להיות null.
        </errorstring>
      </פירוט>
    </סבון:אשמתו>
  </סבון:הגוף>
</סבון:מעטפה>

בטח, אתה כנראה לא להוסיף את הקידומת "s0" בכוחות עצמך, אבל כלים מסוימים נוטים לעשות את זה (כמו ליקוי חמה).

זה עוד יותר מבלבל / מתסכל כי שיטות אחרות לסבול קידומות.  למשל, את GetListCollection שיטה לא אכפת אם הוא היה קידומת, אפילו עם קידומות שטויות כמו "xyzzy":

image

זה "ערך אינו יכול להיות null" נראה שכיחה למדי עם lists.asmx כך אני מקווה שזה יעזור למישהו החוצה בעתיד.

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin