如何使用Smartsheet C#SDK更新链接附件?

我有一个带有链接附件的智能表。我想用其他子字符串替换链接的开头。我是smartsheet的新手,却找不到太多示例代码。

表格设置

SmartsheetClient smartsheet = new SmartsheetBuilder().SetaccessToken(accessToken).Build();

paginatedResult<Sheet> sheets = smartsheet.SheetResources.ListSheets(
    null,// IEnumerable<SheetInclusion> includes
    null,// PaginationParameters
    null                // Nullable<DateTime> modifiedSince = null
);

long sheetId = (long)sheets.Data[1].Id; //get first sheet's ID

//get sheet associated with sheetId
Sheet sheet = smartsheet.SheetResources.GetSheet(sheetId,null,null);

在这里,我正在尝试创建包含必须更改的链接的行列表,

List<Row> rowsToUpdate = new List<Row>();

foreach (var row in sheet.Rows)
{
    Row rowToUpdate = null;
    var cellsToUpdate = new List<Cell>();
    var at = row.Attachments;

    string toReplace = "http://blahblah/blah";
    string newValue = "https://hello/";

    foreach(var attachment in row.Attachments)
    {
        var url = attachment.Url;
        var id = attachment.Id;
        if (url!=null && url.Contains(toReplace)){
            var newUrl = url.Replace(toReplace,newValue);
        }
    }

    //create new cell that will contain updated links
    var cellToUpdate = new Cell {
    ColumnId =,//is it possible to get Attachments column Id? 
    Value = //add updated links here?
    };

    cellsToUpdate.Add(cellToUpdate);

    //this will be added to the list rowsToUpdate
    rowToUpdate = new Row {
    Id = row.Id,Cells = cellsToUpdate
    };
}


smartsheet.SheetResources.RowResources.UpdateRows(sheet.Id.Value,rowsToUpdate);           

我尝试获取“附件”列ID,但是此方法不起作用,因为我认为这是主列(?)

var columns = smartsheet.SheetResources.ColumnResources.ListColumns(sheetId,null).Data;
var attachmentCol = columns[0].Title;

谢谢您的帮助。

lisagaga111 回答:如何使用Smartsheet C#SDK更新链接附件?

行中的附件未指定为列,而是它们的单独行属性。致电GetSheet时,您需要在响应中包括附件:

Sheet sheet = smartsheet.SheetResources.GetSheet(sheetId,new List<SheetLevelInclusion> { SheetLevelInclusion.ATTACHMENTS },null,null);

要更新URL,您可能必须删除附件:

smartsheet.SheetResources.AttachmentResources.DeleteAttachment(
  9283173393803140,// long sheetId
  7169782752536452            // long attachmentId
);

,然后重新添加修改后的附件:

Attachment attachmentSpecification = new Attachment
{
  Url = "http://www.google.com",AttachmentType = AttachmentType.LINK,Name = "Search Engine"
};

// Attach URL to row
Attachment updatedAttachment = smartsheet.SheetResources.RowResources.AttachmentResources.AttachUrl(
  9283173393803140,// long sheetId
  0123456789012345,// long rowId
  attachmentSpecification
);
本文链接:https://www.f2er.com/3169382.html

大家都在问