Как я могу получить список листов (имя и gid) в электронной таблице Google с помощью Drive API?

Я пытаюсь использовать API Google Диска (Python) для загрузки некоторых вкладок файла электронных таблиц. Информация о gids содержится в метаданных файла? То, что я пытаюсь сделать, это (это может быть неправильно, пожалуйста, предложите :)):

file_metadata = self.service.files().get(file_id=file_id).execute()
# in the following line, how can I get a download url with a gid (a tab in a spreadsheet file)
download_url = file_metadata.get('exportLinks')['text/csv']
# download the file.

Спасибо:)


person lucky_start_izumi    schedule 18.09.2015    source источник
comment
›› download_url = file_metadata.get('exportLinks')['text/csv'] + '&gid=' + gid ‹‹ Я также хотел бы получить эти gids из API вместе с названиями вкладок.   -  person AMS    schedule 18.09.2015
comment
Спасибо @AMS, да, с именами было бы здорово!   -  person lucky_start_izumi    schedule 18.09.2015
comment
@AMS, могу я спросить, почему нам нужно двигаться влево?   -  person lucky_start_izumi    schedule 18.09.2015
comment
Нет необходимости на самом деле. Это просто читается лучше, когда вы не можете вставить новую строку в комментарий: P   -  person AMS    schedule 21.09.2015
comment
что ты имеешь в виду под gid?   -  person davejagoda    schedule 02.11.2015


Ответы (2)


Действительно, это похоже на дубликат Как преобразовать идентификатор строки таблицы электронной таблицы Google в целочисленный индекс (GID)?

Вот быстрый ответ:

def to_gid(worksheet_id):
    return int(worksheet_id, 36) ^ 31578
person sorin    schedule 26.11.2015
comment
Кажется, это больше не работает (возможно, из-за новых электронных таблиц Google). Например, worksheet_id omlf5j6 дает мне 53609033112, используя этот метод, когда фактический gid равен 1366234904. - person Chris; 06.04.2016

Вы можете сделать это с помощью службы электронных таблиц в Google Apps Script. Это не так удобно, как прямой вызов API, но, по крайней мере, это возможно:

  1. Вызовите метод SpreadsheetApp.openById(id), чтобы открыть электронную таблицу. с помощью Диска file_id.
  2. Вызовите метод Spreadsheet.getSheets(), чтобы получить список Sheet объектов. .
  3. Для каждого листа вызовите Sheet.getSheetId() и Sheet.getSheetName() для получения имени (которое видит пользователь электронной таблицы ) и sheetId (это то, что необходимо указать в параметре gid= при экспорте).

Вы можете использовать недавно анонсированный Apps Script Execution API, чтобы предоставить REST API для вашего Проект Apps Script, который затем можно вызывать аналогично Drive API.

person kiwidrew    schedule 10.12.2015