【问题标题】:Smartsheet API AttachementSmartsheet API 附件
【发布时间】:2017-02-16 18:40:46
【问题描述】:

我在 smartsheet API 中的附件有问题。

一直提示此行不支持文件路径格式

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

【问题讨论】:

    标签: vb.net smartsheet-api


    【解决方案1】:

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

    顺便说一句,反斜杠应该不在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")
    

    【讨论】:

    • 这正是我想出的。我以为我可以从工作表中的工作表中获取 rowId,但这并没有保留行值。相反,我不得不从包含行信息的 SheetResources 中对工作表进行评分。谢谢你的帮助!!!
    【解决方案2】:

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

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

    ...其中path的值定义如下:

    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 的值,这是不正确的 -- rowId 应该是一个 GUID(例如,更像这样的东西:4583173393803140)。

    【讨论】:

    • 我开始认为它是 rowID。如果我将路径更改为正确的路径,它会喜欢它,但现在给我一个错误“未找到”。不是路径......只是“未找到”。我相信这与rowID有关。我可以抓住...但它告诉我工作表有 0 行,我知道它确实如此。打算再挖一些。感谢您的输入!我稍后会更新
    • 现在知道了。我必须打开 SheetResources 才能获得 Row.ID。谢谢你!
    猜你喜欢
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多