2017-02-16 48 views
0

我遇到了smartsheet API中attachemnt的问题。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 

回答

1

AttachFile的第二个参数是rowId,而不是行号。我相信你的'找不到'错误是由于行未被找到 要获得第一行的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") 
+0

这正是我想到的。我以为我可以从工作表中获取rowId,但是这并没有保留和行值。 我反而不得不从SheetResources中对工作表进行修改,该工作负载了行信息。 感谢您的帮助! –

1

也许将您正在做的和integration test code作为SDK的一部分进行比较会有帮助吗?具体地讲,我已链接到文件中的AttachFileAndUrlToRow方法包含此线用于添加的附件中的一行:

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

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

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

比较是测试代码,你已经发布的代码,我注意到有一些不同之处:

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

也许在排除故障的第一步,逃生每个文件path--即反斜杠,添加额外的反斜线每次出现:

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

另外(虽然有可能无关您的问题) - - 看起来你正在传递1的值为rowId,这是不正确的 - rowId应该是一个GUID(例如,更像是这样的:4583173393803140)。

+0

即时通讯开始认为它的ROWID。如果我将路径更改为正确的路径,它喜欢它,但现在给我一个错误“未找到”。不是路径...只是“未找到”。我相信这与rowID有关。 我可以抓住...但它告诉我该工作表有0行,我知道它。去挖更多。感谢您的输入!我会稍后更新 –

+0

现在明白了。我必须打开SheetResources才能获得Row.ID。 谢谢你! –