2016-04-19 10 views
1

シートが特定のグループに属するかどうかを確認するにはどうすればよいですか?特定のグループに属するシートを取得する

たとえば、私たちはRPRというグループを持っています。私たちはシートを作成するときに、グループ内の他のユーザーと共有します。シートは、組織に属しているが、そのシートは、特定のグループに属している場合、私は言うことができない場合、私は見ることができます上記のコードでは

// Get all sheets modified within last day  
SmartSheetList = smartsheet 
     .SheetResources 
     .ListSheets(new SheetInclusion[] { SheetInclusion.OWNER_INFO }, new PaginationParameters(true, null, null)) 
     .Data 
     .Where(d => d.ModifiedAt.Value.Date >= DateTime.Now.AddDays(-1).Date) 
     .ToList(); 

// Get organization sheets 
var orgUserSheets = smartsheet.UserResources.SheetResources.ListSheets(true).Data.ToList(); 

// get specific group 
var group = smartsheet.GroupResources.ListGroups(null).Data.Where(grp => grp.Id == some-id-here).First(); 

。どんな助けもありがとう。

答えて

1

シート上の共有のリストを取得するために、各シートに対して1つ以上のAPIリクエストが必要です。シートはシート上またはワークスペース上で直接共有することができます。

特定のグループと直接またはワークスペース経由で共有されるシートを取得するには、以下のようなコードを使用します(このサンプルではLINQを使用します)。

SmartsheetClient cl = new SmartsheetBuilder() 
    .SetAccessToken(ACCESS_TOKEN) 
    .Build(); 

var includeAll = new PaginationParameters(true, null, null); 
Console.WriteLine("Looking for group " + SOUGHT_GROUP_NAME); 
var groups = cl.GroupResources.ListGroups(includeAll); 
var soughtGroup = groups.Data.Single((group) => group.Name == SOUGHT_GROUP_NAME); 
Console.WriteLine("Found group ID {0} for group {1}.", soughtGroup != null ? soughtGroup.Id.ToString() : "NULL", SOUGHT_GROUP_NAME); 
if (soughtGroup == null) 
    throw new ArgumentException("Group not found"); 

var sheets = cl.SheetResources.ListSheets(null, includeAll); 
Console.WriteLine("Querying through {0} sheets...", sheets.Data.Count); 
var sheetsSharedWithGroup = from sheet in sheets.Data 
          from share in cl.SheetResources.ShareResources.ListShares(sheet.Id.Value, includeAll, ShareScope.Workspace).Data 
          where share.GroupId == soughtGroup.Id 
          select new { Sheet = sheet, Share = share }; 

var found = sheetsSharedWithGroup.ToList(); 
Console.WriteLine("Found {0} sheets shared with group {1}.", found.Count, SOUGHT_GROUP_NAME); 
found.ForEach(foundSheet => Console.WriteLine("Sheet {0} shared with {1} ({2})", foundSheet.Sheet.Name, foundSheet.Share.Name, foundSheet.Share.Type)); 

注:私はあまりにも、ワークスペースの共有を返す特定ListShares過負荷のサポートを追加するa pull requestを提出しました。これはREST APIで使用できますが、まだC#SDKには含まれていません。

注:上記のコードでは、まだSmartsheet Sightsは考慮されていません。視覚に対応するREST API(つまりList Sights,を使用することは可能ですが、まだC#SDKには含まれていません)

関連する問題