如何使用smartsheet api sdk发送文件附件

本文关键字:文件 sdk 何使用 smartsheet api | 更新日期: 2023-09-27 18:11:55

我想将文件附件从fileupload发送到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。

编辑:

这段代码是正确的,当我运行我的代码时,我在我的工作表上的tab附件中找到了文件附件,但我想将该文件附加到我添加的新行中。

你能帮我解决这个问题吗?我仍然是新的使用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();
            }
        }
    }
}

如何使用smartsheet api sdk发送文件附件

我不是c#开发人员,但我非常熟悉Smartsheet的Java SDK, c# SDK是模仿的,所以下面的答案可能有一些轻微的语法问题,但它应该给你一些要点。

您几乎就在那里-要将文件附加到新行,您只需要获得您刚刚创建的新行的id,然后附加到它而不是工作表。修改行:

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);