2017-02-16 6 views
0

У меня возникла проблема с attachemnt в API smartsheet.Смартсет API Attachment

Он продолжает говорить мне, что формат пути файла не поддерживается на этой линии

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, а не номер строки. Я считаю, что ваша ошибка не найдена из-за того, что строка не найдена Чтобы получить идентификатор первой строки, вам нужно вызвать SheetResources.GetSheet(), чтобы получить коллекцию объектов Row.

BTW, обратные косые должны не быть экранированы в VB строки

Try подобный код

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

Im начиная думать сво RowId. Если я изменю путь к правильному пути, ему это нравится, но теперь я получаю сообщение об ошибке «Не найдено». Не путь ... просто «Не найдено».Я считаю, что это связано с идентификатором rowID. Который я могу схватить ... но это говорит мне, что у листа есть 0 строк, и я знаю, что это так. Идти копать еще. Спасибо за ваш вклад! Я обновлю позже –

+0

Получил его сейчас. Мне нужно было открыть SheetResources, чтобы получить Row.ID. Спасибо за это! –