API-интерфейс Python Smartsheet: невозможно получить доступ ни к каким атрибутам объекта вложения, кроме имени, URL-адреса и идентификатора вложения. - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь получить доступ к метке времени метки AtA для вложения в Smartsheet. Я создал объект вложения с помощью функции get_attachment (sheetID, attachmentID).

Когда я печатаю объект, все атрибуты отображаются со значениями. Однако, когда я пытаюсь вернуть отдельное значение attachmentObject.createdAt, я получаю сообщение об ошибке. Он отлично работает для атрибутов url, name и id, но не для других. Как мне получить доступ к этому значению, которое явно там !!!

Это не формат моих операторов печати или чего-то еще, я пытался печатать сам по себе без форматирования строки, типа (атрибута), просто объявив переменную на основе этого. Ничего из этого не работает. Сообщение об ошибке бесполезно, это просто имя атрибута. Даже когда я вынимаю цикл «попробовать / исключить», сообщение об ошибке все равно остается только именем атрибута.

Единственное, что я обнаружил, что на самом деле работает, - это действительно нелепая работа, которую я не хочу делатьс, если я могу избежать этого.

Я превращаю весь объект в строку, разделяю строку на ',', чтобы создать список. Затем я разделил каждое из этих значений на ':', чтобы создать пару ключ / значение и в основном создать словарь для каждого элемента. Затем я беру строку метки времени и превращаю ее в объект datetime с помощью strptime.

Это работает, но на самом деле не идеально, и должен быть способ получить доступ к атрибутам объекта.

attachment_attributes = ss.Attachments.get_attachment(res_id, attachment_id)
print(attachment_attributes)

try:
    print('ATTACHMENT CREATED AT: ' + str(attachment_attributes.createdAt))
except Exception as e:
    print('ERROR: ' + str(e))

try:
    print('ATTACHMENT NAME: ' + str(attachment_attributes.name))
except Exception as e:
    print('ERROR: ' + str(e))


CURRENT OUTPUT
-------------------------------------------------
print(attachment_attributes) returns this:

{"attachmentType": "FILE", 
"createdAt": "2019-10-07T16:52:01+00:00Z", 
"createdBy": {"email": "osian@coastalmountain.ca"}, 
"id": 1410102853953412, 
"mimeType": "application/pdf", 
"name": "documentname.pdf", 
"parentId": 2876391983212420, 
"parentType": "ROW", "sizeInKb": 183, 
"url": "https://s3.amazonaws.com/...", 
"urlExpiresInMillis": 120000}


print of individual attributes returns this:

ERROR: createdAt //Output for the createdAt attriute
ATTACHMENT NAME: documentname.pdf //Output for the name attribute


EXPECTED RESULT FOR PRINTING attachment_attributes.createdAt:
-------------------------------------------------
"ATTACHMENT CREATED AT: 2019-10-07T16:52:01+00:00Z"

1 Ответ

0 голосов
/ 10 октября 2019

Попробуйте использовать attachment_attributes.created_at для доступа к этому объекту. Python использует соглашение об именах атрибутов: регистр змеи , все строчные буквы и разделены подчеркиванием. Smartsheet Python SDK также следует этому соглашению. Несмотря на то, что объекты JSON возвращают show верблюжий корпус при работе непосредственно с API, Smartsheet Python SDK сериализует ответы для работы с соглашением о случаях змеи. Это должно позволить вам получить доступ к атрибуту, который вам нужен. Это может быть применено ко всем многословным атрибутам. Вы, другие, вероятно, работаете из-за того, что они являются именами атрибутов с одним словом.

...