gpt4 book ai didi

c# - Smartsheet c# SDK 父子

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:24 25 4
gpt4 key购买 nike

在 Smartsheet c# SDK 中,row.ParentRowId 很有用,但我没有看到确定给定行在层次结构中的级别的方法?例如,如果我有类似...

  • 项目名称
    • 第 1 节
      • 任务 1
      • 任务 2
    • 第 2 部分
      • 任务 3
      • 任务 4

在 Microsoft 项目中,有一个“大纲级别”字段,项目名称为“1”,第 1 节和第 2 节为“2”,示例中的每个任务为“3”。

我不知道如何使用 Smartsheet 的 SDK 确定(或更改)行的“大纲级别”。

谢谢,

最佳答案

使用 Smartsheet API,一行是另一行的子行这一事实由 Row 对象上的 parentId 属性指示。如果存在,则 Row 对象上的该属性指定父行的 Id 的值。

具体对于 C# SDK,此属性公开为 Row 对象的 ParentId 属性(注意“ParentId”的大写) .使用 C# SDK:

  • 如果响应中 Row 对象的 ParentId 属性为 null,则表明该 Row 是顶级行(即,不是任何其他行的子行)。<
  • 如果 Row 对象的 ParentId 属性不为空,这表明该行是具有与 ParentId 相对应的 Id 的行的子行 值(value)。

以下代码片段使用 C# SDK 通过检查工作表中每一行的 ParentId 值来识别行层次结构。

// Set the Access Token.
Token token = new Token();
token.AccessToken = YOUR_ACCESS_TOKEN;

// Use the Smartsheet Builder to create a Smartsheet.
SmartsheetClient smartsheet = new SmartsheetBuilder().SetAccessToken(token.AccessToken).Build();

// Get Sheet.
long sheetId = YOUR_SHEET_ID;
Sheet sheet = smartsheet.SheetResources.GetSheet(sheetId, null, null, null, null, null, null, null);

// Identify Row hierarchy by examining the ParentId property of each row.
foreach (Row row in sheet.Rows)
{
if (row.ParentId != null)
{
Response.Write("Row #" + row.RowNumber.ToString() + " (Id=" + row.Id.ToString() + ") is a child of Row Id " + row.ParentId.ToString() + "<br/><br/>");
}
else
{
Response.Write("Row #" + row.RowNumber.ToString() + " (Id=" + row.Id.ToString() + ") is a top-level row.<br/><br/>");
}
}

Smartsheet API 当前不公开类似于“大纲级别”的属性——但您应该能够通过使用如上所述的 ParentId 属性导出每一行的“大纲级别” .

您可以使用 Smartsheet API 更改行的“大纲级别”(即缩进),方法是使用 API 文档中描述的位置说明符行属性:http://smartsheet-platform.github.io/api-docs/#row-include-flags .

使用 C# SDK,您可以在调用 Row.AddRowBuilder(…) 函数时指定位置说明符 Row 属性的某种组合来描述行在工作表中的放置位置,相对于其他已经存在的行。我在上面链接到的文档描述了通过为一行设置位置说明符属性的各种组合而获得的放置结果。

例如,以下脚本在指定的父行下添加一个新行作为第一个子行:

// Set the Access Token.
Token token = new Token();
token.AccessToken = YOUR_ACCESS_TOKEN;

// Use the Smartsheet Builder to create a Smartsheet.
SmartsheetClient smartsheet = new SmartsheetBuilder().SetAccessToken(token.AccessToken).Build();

// Get Sheet.
long sheetId = YOUR_SHEET_ID;
Sheet sheet = smartsheet.SheetResources.GetSheet(sheetId, null, null, null, null, null, null, null);

// Identify Row hierarchy by examining the ParentId property of each row.
foreach (Row row in sheet.Rows)
{
if (row.ParentId != null)
{
Response.Write("Row #" + row.RowNumber.ToString() + " (Id=" + row.Id.ToString() + ") is a child of Row Id " + row.ParentId.ToString() + "<br/><br/>");
}
else
{
Response.Write("Row #" + row.RowNumber.ToString() + " (Id=" + row.Id.ToString() + ") is a top-level row.<br/><br/>");
}
}

/************************************************
* Add new row.
/************************************************/

// Specify cell values for the row.
Cell[] cells = new Cell[] { new Cell.AddCellBuilder(2069395137685380, "New Task").Build(), new Cell.AddCellBuilder(4743407416436612, "Added via API").SetStrict(false).Build() };

// Specify the Id of the parent row.
long parentId = 1085142354683780;

// Specify contents and placement of new row.
// Use the 5 parameters of the "AddRowBuilder" function to specify row's placement: toTop, toBottom, parentId, siblingId, above
// Specifying parentId only will add the new row as the first child row under the specified parent row.
Row newRow = new Row.AddRowBuilder(null, null, parentId, null, null).SetCells(cells).Build();

// Add row to sheet.
smartsheet.SheetResources.RowResources.AddRows(sheetId, new Row[] { newRow });

关于c# - Smartsheet c# SDK 父子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32365846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com