I have a smartsheet with a bunch of link attachments. I'd like to replace the beginning of the links with a different substring. I am new to smartsheet and have not been able to find much sample code.
Sheet setup,
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, null, null, null, null, null);
Here I'm trying to create of list of rows containing links that have to be changed,
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);
I have tried getting the Attachments column Id but this method did not work because I think it's a primary column(?)
var columns = smartsheet.SheetResources.ColumnResources.ListColumns(sheetId, null, null).Data;
var attachmentCol = columns[0].Title;
Thank you for your help.