Копирование строки Smartsheet с вложениями

#python #smartsheet-api

#python #smartsheet-api

Вопрос:

Я продолжаю пытаться скопировать строку с одного листа на другой с вложениями строк. Вложения копируются автоматически при перемещении строк между листами, но не при копировании. В документации API указано, что существует параметр «включить», для которого можно установить значение «все», и что это также приведет к копированию вложений. Кто-нибудь захочет предоставить образец этого параметра и как записать его во что-то вроде следующего?

прошу прощения, если это базовый python. Я новичок в языке и очень новичок в api.

 response = smart.Sheets.copy_rows( 
    18382041966468,
    smart.models.CopyOrMoveRowDirective({
        'row_ids': [7372751113086852],
        'to': smart.models.CopyOrMoveRowDestination({
            'sheet_id': 4433677678602116
        })
    })
)
 

Ответ №1:

include Атрибут является третьим аргументом, который вы предоставляете copy_rows методу после CopyOrMoveRowDirective того, где вы устанавливаете row_ids лист назначения и. Для копирования в дополнение к данным ячейки требуется список элементов строки, разделенных запятыми. Я нашел это, рассматривая copy_rows метод в SDK здесь.
Вы также можете просто задать одну строку. Ваш код с include='all' помощью будет выглядеть следующим образом:

 response = smart.Sheets.copy_rows( 
    18382041966468,
    smart.models.CopyOrMoveRowDirective({
        'row_ids': [7372751113086852],
        'to': smart.models.CopyOrMoveRowDestination({
            'sheet_id': 4433677678602116
        })
    }),
    include='all'
)
 

Чтобы сделать это со списком для включения, вы можете установить его следующим образом:

 response = smar_client.Sheets.copy_rows(
  4453526869960580,               # sheet_id of rows to be copied
  smar_client.models.CopyOrMoveRowDirective({
    'row_ids': [1874694623782788],
    'to': smar_client.models.CopyOrMoveRowDestination({
      'sheet_id': 1955951847729028
    })
  }),
  include=['attachments','discussions']
)
 

Комментарии:

1. Спасибо, это решило проблему. В документации упоминалось, что этот параметр представляет собой список элементов. Я воспринимал это как буквальный список python.

2. Отлично, я рад, что это помогло. Вы можете предоставить список вместо строкового значения, если хотите добавить несколько значений для включения, а не только все. Вы можете установить include равным списку со строками для обсуждений и вложений, если вам нужны только те, например. Я просто отредактировал свой ответ, чтобы иметь это, и показал пример использования списка для включения вместо просто строкового значения для всех.