Smartsheet API Attachement

时间:2017-02-16 18:40:47

标签: vb.net smartsheet-api

我在智能表API中遇到了attachemnt问题。

它一直告诉我此行不支持文件路径格式

smartSheet.SheetResources.RowResources.AttachmentResources.AttachFile(id, 1, "N:\TEST\M-TST-12346\M-TST-12346-TV.pdf", "application/pdf")

任何帮助都会很棒!

Public Sub GetSheetsInWorkspace(workspaceID As Int64)
        Dim workspace As Workspace
        workspace = smartSheet.WorkspaceResources.GetWorkspace(workspaceID, Nothing, Nothing)
        Dim folder As Folder
        folder = smartSheet.FolderResources.GetFolder(5398922303694724, Nothing)
        Dim sheets As List(Of Sheet)
        sheets = folder.Sheets
        For Each sheet In sheets
            If sheet.Name = "ALAN S. INPUT" Then
                Dim id
                id = sheet.Id
                smartSheet.SheetResources.RowResources.AttachmentResources.AttachFile(id, 1, "N:\TEST\M-TST-12346\M-TST-12346-TV.pdf", "application/pdf")
            End If
        Next
    End Sub

2 个答案:

答案 0 :(得分:1)

或许将您正在做的事情与作为SDK一部分提供的integration test code进行比较可能会有所帮助?具体来说,我链接到的文件中的 AttachFileAndUrlToRow 方法包含此行,用于向行添加附件:

Attachment attachment = smartsheet.SheetResources.RowResources.AttachmentResources.AttachFile(sheetId, rowId, path, null);

...其中路径的值定义如下:

string path = "../../../IntegrationTestSDK/TestFile.txt";

将测试代码与您发布的代码进行比较,我注意到一些差异:

  • 您的代码在文件路径中使用(单个)反斜杠(\),而SDK测试代码使用正斜杠(/)
  • 您正在指定使用驱动器映射的路径(N:\),而SDK测试代码指定相对路径
  • 您传入的是最后一个参数(application/pdf)的值,而SDK测试代码为最后一个参数指定了null

也许作为故障排除的第一步,转义文件路径中的每个反斜杠 - 即,为每次出现添加额外的反斜杠:

smartSheet.SheetResources.RowResources.AttachmentResources.AttachFile(id, 1, "N:\\TEST\\M-TST-12346\\M-TST-12346-TV.pdf", "application/pdf")

如果这不能解决您的问题,那么可能尝试将每个反斜杠更改为正斜杠(与SDK测试代码的功能一致):

smartSheet.SheetResources.RowResources.AttachmentResources.AttachFile(id, 1, "N:/TEST/M-TST-12346/M-TST-12346-TV.pdf", "application/pdf")

此外(虽然可能与您的问题无关) - 看起来您已经为 rowId 传递1的值,这是不正确的 - < strong> rowId 应该是GUID(例如,更像这样的内容:4583173393803140)。

答案 1 :(得分:1)

AttachFile的第二个参数是rowId,而不是行号。我相信你的“未找到”错误是由于没有找到Row 要获取第一行的id,您需要调用SheetResources.GetSheet()来获取Row对象的集合。

BTW,反斜杠应该在VB字符串中转义

尝试这样的代码

mySheet = ss.SheetResources.GetSheet(sheetId, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
Dim rowId As Long
rowId = mySheet.Rows.First.Id
ss.SheetResources.RowResources.AttachmentResources.AttachFile(sheetId, rowId, "C:\tmp\test.pdf", "application/pdf")