Почему не удаётся преобразовать таблицу из Google Таблиц в формат Excel?

Как мне модифицировать следующий VBA код, чтобы скачать Google Таблицу в формате Excel, если URL таблицы оканчивается на "/edit#gid=531909647"? Текущий код работает исправно, когда URL заканчивается на "/edit?usp=sharing", меняя его на "/export?format=xlsx" и используя функцию URLDownloadToFile для загрузки файла:

```
GoogleSheetURL = Replace(GoogleSheetURL, "/edit?usp=sharing", "/export?format=xlsx")
URLDownloadToFile 0, GoogleSheetURL, FilePath, 0, 0
```

Однако, при URL, оканчивающемся на "/edit#gid=531909647", файл в указанной папке не появляется и VBA не генерирует ошибок, позволяя коду выполниться полностью.
  • 5 декабря 2023 г. 7:41
Ответы на вопрос 2
В URL Google Таблицы параметр `gid` указывает на конкретный лист внутри документа. Проблема заключается в том, что вы пытаетесь преобразовать URL, который предназначен для редактирования документа в браузере, в URL для скачивания файла. Чтобы преобразовать URL для скачивания листа в формате Excel, необходимо слегка модифицировать ваш код.

Формат URL для экспорта листа из Google Таблиц в Excel будет таким: `https://docs.google.com/spreadsheets/d/DOC_ID/export?format=xlsx&gid=SHEET_ID`, где `DOC_ID` — это идентификатор документа, а `SHEET_ID` — это идентификатор листа (значение `gid`). 

Давайте модифицируем ваш код:

```vb
' Ваш исходный URL
GoogleSheetURL = "https://docs.google.com/spreadsheets/d/your_spreadsheet_id/edit#gid=531909647"

' Избавляемся от части с 'edit' и всего, что после, включая '#'
' и заменяем на строку экспортирования в формате Excel.
' Не забываем оставить идентификатор листа (gid) для экспорта определенного листа.
GoogleSheetURL = Split(GoogleSheetURL, "/edit")(0)
GoogleSheetURL = GoogleSheetURL & "/export?format=xlsx&gid=531909647"

' Функция для скачивания файла (зависит от того, как она реализована у вас)
URLDownloadToFile 0, GoogleSheetURL, FilePath, 0, 0
```

Обратите внимание, что `your_spreadsheet_id` и `531909647` нужно заменить на реальный ID вашего Google Spreadsheet и ID конкретного листа соответственно.

Этот код должен сработать при условии, что документ доступен для скачивания без авторизации (или если в VBA реализовано сохранение сессии пользователя Google). Если файл требует авторизацию, тогда для скачивания вам придется использовать OAuth 2.0 для аутентификации и получения токена доступа, который вам нужно будет использовать в запросе на скачивание файла.
стоит какой-то из запретов ( сохранение, скачивание etc)https://support.google.com/docs/answer/9331169?hl=ru
Похожие вопросы