2017-02-13 5 views
0

SharePoint 클라이언트 개체 모델을 사용하여 SharePoint에 온라인으로 로그인 한 다음 목록을 검색하여 Sharepoint에서 문서를 가져옵니다. 그런 다음 공유 링크을이 문서에 보내고 싶습니다. 여기에 내가 지금 그 일을하고있다 방법은 다음과 같습니다 여기SharePoint 온라인 CSOM 정보 개체

using (var context = new ClientContext(siteURL)) 
{ 
    context.Credentials = new SharePointOnlineCredentials(login, securePassword); 
    context.Load(context.Web, w => w.Title); 
    context.ExecuteQuery(); 

    List docList = context.Web.Lists.GetByTitle("Documents"); 
    context.Load(docList); 
    // This creates a CamlQuery that has a RowLimit of 100, and also specifies Scope="RecursiveAll" 
    // so that it grabs all list items, regardless of the folder they are in. 
    CamlQuery query = CamlQuery.CreateAllItemsQuery(100); 
    ListItemCollection items = docList.GetItems(query); 

    // Retrieve all items in the ListItemCollection from List.GetItems(Query). 
    context.Load(items); 
    context.ExecuteQuery(); 
    foreach (ListItem listItem in items) 
    { 
      var sharingInfo = ObjectSharingInformation.GetListItemSharingInformation(
      context, docList.Id, listItem.Id, false, true, false, true, true, true); 

      context.Load(sharingInfo); 
      context.ExecuteQuery(); 
      string str = sharingInfo.AnonymousEditLink; 
    } 
} 

문제는 sharingInfo 객체가 AnonymousEditLink라는 필드를 가지고 있다는 것입니다하지만 빈 문자열입니다. 왜 이것이 빈 문자열인지 모르겠습니다. 이것이 공유 링크를 생성하는 올바른 방법입니까?

나는이 시도했다 (그러나 아무 소용) : https://sharepoint.stackexchange.com/questions/143612/how-to-retrieve-the-shared-link-of-a-file-programmatically

내가 셰어에 그래서 CSOM 어떤 도움에 새로운 해요 :

var sharingInfo = ObjectSharingInformation.GetObjectSharingInformation(
        context, listItem, false, true, false, true, true, true, true); 

나는 여기에 나와있는 방법을 참조하고 감사하겠습니다!

+0

행운이 있었나요? 요청을하면 UI 외부에 표시되는 사용자가 도메인 외부에 표시되지 않습니다. – Boomerang

답변

0

저는 GetListItemSharingInformation으로 작업/테스트를 해왔고 사용자가 전자 메일을 통해받은 링크에 액세스하면 AnonymousEditLink가 채워진 것처럼 보입니다.

SharedWithUsersCollection에서도 마찬가지입니다. 기본적으로 사용자가 링크에 액세스하면 속성이 채워진 것을 확인할 수 있습니다.