4

添付ファイルを 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 を使用します。

編集: そのコードは正しかったです。コードを実行すると、シートのタブ添付ファイルに添付ファイルが見つかりましたが、そのファイルを追加した新しい行に添付したいと思います。

これを解決するのを手伝ってもらえますか? 私はまだスマートシートを使用するのが初めてで、スマートシート api sdk c# の使用方法をまだ学んでいますが、スマートシート 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();
            }
        }
    }
}
4

1 に答える 1

2

私は C# 開発者ではありませんが、C# SDK がモデル化された Smartsheet の Java 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);
于 2014-07-07T16:31:15.417 に答える