シート上の共有のリストを取得するために、各シートに対して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には含まれていません)