Как отправить файл вложения с помощью smartsheet api sdk
Я хочу отправить вложение файла из файла загрузки в smartsheet. Я использовал SDK, я нашел пример кода для прикрепления. Это мой код для прикрепления:
if (fileUpload.HasFile)
{
string fileName = fileUpload.PostedFile.FileName;
string sourceFile = Server.MapPath("~/")+fileName;
fileUpload.PostedFile.SaveAs(sourceFile);
string type = fileUpload.PostedFile.ContentType;
smartsheet.Sheets().Attachments().AttachFile(sheetId, sourceFile, type);
}
Я читал о методе AttachFile(), должен использовать ObjectId, но я не понимаю, как получить ObjectId, поэтому я использую sheetId.
Изменить: этот код был правильным, когда я запустил свой код, я обнаружил вложение файла во вложении вкладки на моем листе, но я хочу вложить этот файл в новую добавленную строку.
Можете ли вы помочь мне решить это? Я все еще новичок в использовании smartsheet и все еще изучаю, как использовать smartsheet api sdk C#, но я не нашел много примеров или примеров кода для использования smartsheet api.
Вот мой полный код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Smartsheet.Api;
using Smartsheet.Api.Models;
using Smartsheet.Api.OAuth;
namespace smartsheet
{
public partial class TestInput : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
string strToken = "649qjpt7pmq8i0xze5550hr12x";
long sheetId = 4204618734430084;
Token token = new Token();
token.AccessToken = strToken;
SmartsheetClient smartsheet = new SmartsheetBuilder().SetAccessToken(token.AccessToken).Build();
Smartsheet.Api.Models.Home home = smartsheet.Home().GetHome(new ObjectInclusion[] { ObjectInclusion.TEMPLATES });
List<Column> cols = new List<Column>(smartsheet.Sheets().Columns().ListColumns(sheetId));
Cell cell1 = new Cell();
cell1.ColumnId = cols[0].ID;
cell1.Value = txFirstname.Text;
Cell cell2 = new Cell();
cell2.ColumnId = cols[1].ID;
cell2.Value = txLastname.Text;
List<Cell> cells = new List<Cell>();
cells.Add(cell1);
cells.Add(cell2);
Row row = new Row();
row.Cells=cells;
List<Row> rows = new List<Row>();
rows.Add(row);
RowWrapper rowWrapper = new RowWrapper.InsertRowsBuilder().SetRows(rows).SetToBottom(true).Build();
smartsheet.Sheets().Rows().InsertRows(sheetId, rowWrapper);
if (fileUpload.HasFile)
{
string fileName = fileUpload.PostedFile.FileName;
string sourceFile = Server.MapPath("~/")+fileName;
fileUpload.PostedFile.SaveAs(sourceFile);
string type = fileUpload.PostedFile.ContentType;
smartsheet.Sheets().Attachments().AttachFile(sheetId, sourceFile, type);
}
}
catch (Exception ex)
{
LableMsg.Text = ex.Message.ToString();
}
}
}
}
1 ответ
Я не разработчик C#, но я очень хорошо знаком с Java SDK Smartsheet, который был смоделирован после C# SDK, поэтому могут быть некоторые небольшие проблемы с синтаксисом в ответе ниже, но он должен дать вам суть вещей.
Вы почти у цели - чтобы прикрепить файл к новой строке, вам просто нужно получить идентификатор новой строки, которую вы только что создали, а затем прикрепить к ней вместо листа. Измените свою линию:
smartsheet.Sheets().Rows().InsertRows(sheetId, rowWrapper);
в
IList<Row> insertedRow = smartsheet.Sheets().Rows().InsertRows(sheetId, rowWrapper);
long newRowId = insertedRow.get(0).ID;
Теперь вы можете прикрепить непосредственно к этой строке:
smartsheet.Rows().Attachments().AttachFile(newRowId, sourceFile, type);