Как скачать таблицу google с публичной ссылки

1. bulpi 215 09.07.20 20:28 Сейчас в теме
Есть ссылка на гугл документ:
https://docs.google.com/spreadsheets/d/<тут идентификатор файла>/edit?ts=5ad0aa10#gid=933612927
Из нее можно сделать ссылку на скачивание :
https://docs.google.com/spreadsheets/d/<тут идентификатор файла>/export?exportFormat=xlsx
и легко скачать файл с помощью любого браузера.
Но я хочу скачать программно, из 1с.
Код :
Соединение = Новый HTTPСоединение("docs.google.com", , , , , ,Новый ЗащищенноеСоединениеOpenSSL());
Запрос=Новый HTTPЗапрос("spreadsheets/d/1<тут идентификатор файла>export?exportFormat=xlsx");
ИмяФ = ПолучитьИмяВременногоФайла("xlsx");
Ответ=Соединение.Получить(Запрос,ИмяФ);

В файл приходит не xlsx, а html :
<HT ML>
<HEAD>
<TITLE>Temporary Redirect</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Temporary Redirect</H1>
The document has moved here.
</BODY>
</HTML>

Почему? И как все-таки скачать?
Вознаграждение за ответ
Показать полностью
Найденные решения
7. 6есик 52 10.07.20 09:54 Сейчас в теме +10 $m
	Соединение = Новый HTTPСоединение("docs.google.com",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	Запрос=Новый HTTPЗапрос("spreadsheets/d/"+ИДГуглТаблицы+"/export?exportFormat=xlsx");
	ИмяФ = ПолучитьИмяВременногоФайла("xlsx");
	Ответ=Соединение.Получить(Запрос); 
	Если Ответ.КодСостояния = 307 Тогда
		 АдресФайла = Ответ.Заголовки.Получить("Location");
		 Сервер = стрРазделить(АдресФайла,"\/")[2];
		 Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
		 Запрос=Новый HTTPЗапрос(СтрЗаменить(АдресФайла,"https://"+Сервер+"/",""));
		 Ответ=Соединение.Получить(Запрос,ИмяФ);
	КонецЕсли;
Показать
AlexanderP; DanDy; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. user856012 13 09.07.20 21:34 Сейчас в теме
(1) Может быть, вот тут удастся подсмотреть если не решение, так подсказку: https://infostart.ru/public/813261/
9. bulpi 215 10.07.20 11:43 Сейчас в теме
(4)Это все я находил. Там получение доступа к СВОЕЙ таблице, на своем гугл диске. Аутентификация и все такое. А мне нужно скачать ЧУЖУЮ таблицу, с чужого гугл диска, к которой дан публичный доступ.
5. Sashares 34 09.07.20 22:41 Сейчас в теме
(1)А если получить ссылку из полученного ответа под словом "here" и скачать ее?
10. bulpi 215 10.07.20 11:44 Сейчас в теме
(5)Увы, не получается. Там ссылка уже не публичная, меня туда не пускает.
13. bulpi 215 10.07.20 12:01 Сейчас в теме
(5)Возможно, я где-то протупил. Бесик(7) подсказал примерно то же, но через заголовки. И прошло! Возможно, когда я пробовал парсить ответ после here, я где-то ошибся.
15. Sashares 34 10.07.20 12:11 Сейчас в теме
(13)Ну, главное, что заработало=)
8. bulpi 215 10.07.20 11:43 Сейчас в теме
(2)Это все я находил. Там получение доступа к СВОЕЙ таблице, на своем гугл диске. Аутентификация и все такое. А мне нужно скачать ЧУЖУЮ таблицу, с чужого гугл диска, к которой дан публичный доступ.
3. AlexandrSmith 69 09.07.20 21:29 Сейчас в теме
Внешние источнки данных, прицепляете как Excel в пути файлов. Попробуйте, должно получиться. Пробовал с обыкновенными таблицами XLS, получалось.
14. bulpi 215 10.07.20 12:02 Сейчас в теме
(3)Возможно, но попробовать не успел. Бесик(7) подсказал решение.
6. LosevI 10.07.20 04:26 Сейчас в теме
Выше уже ссылку скинули, беглым взглядом увидел, что в той статье примерно тот же подход, но вставлю свои 5 копеек:
Недавно писал интеграцию с Google Drive, для собственных нужд, программно читаю/проверяю/скачиваю общедоступные файлы со своего диска.

Для данного механизма мне потребовалось создать ключ API, разобраться с документацией на девелоперс-сайте Google (Drive v3).
В коде, если упрощать, примерно то же, что вы написали, но текст HTTP запроса, естественно другой, он должен быть постоен по правилам соответствующего API.

https://developers.google.com/

Насколько я понимаю, документы и таблицы сами тоже находятся в драйве, так что, возможно, у вас получится пойти тем же путем, так как вам нужно скачать файл целиком.

Например, в моем случае, для скачивания я использовал метод get
https://developers.google.com/drive/api/v3/reference/files/get
Сбоку у них есть довольно удобный конструктор, простейший шаблон для вашего случая будет выглядеть примерно так:
"https://www.googleapis.com/drive/v3/files/[FILEID]?key=[YOUR_API_KEY]" - это текст HTTP запроса, в квадратные скобки подставить ваши два параметра.
TimoninD; +1 Ответить
11. bulpi 215 10.07.20 11:45 Сейчас в теме
(6)Это все я находил. Там получение доступа к СВОЕЙ таблице, на своем гугл диске. Аутентификация и все такое. А мне нужно скачать ЧУЖУЮ таблицу, с чужого гугл диска, к которой дан публичный доступ. YOUR_API_KEY мне неизвестен.
7. 6есик 52 10.07.20 09:54 Сейчас в теме +10 $m
	Соединение = Новый HTTPСоединение("docs.google.com",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	Запрос=Новый HTTPЗапрос("spreadsheets/d/"+ИДГуглТаблицы+"/export?exportFormat=xlsx");
	ИмяФ = ПолучитьИмяВременногоФайла("xlsx");
	Ответ=Соединение.Получить(Запрос); 
	Если Ответ.КодСостояния = 307 Тогда
		 АдресФайла = Ответ.Заголовки.Получить("Location");
		 Сервер = стрРазделить(АдресФайла,"\/")[2];
		 Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
		 Запрос=Новый HTTPЗапрос(СтрЗаменить(АдресФайла,"https://"+Сервер+"/",""));
		 Ответ=Соединение.Получить(Запрос,ИмяФ);
	КонецЕсли;
Показать
AlexanderP; DanDy; +2 Ответить
12. bulpi 215 10.07.20 12:00 Сейчас в теме
(7) ДА!!!! Работает! Спасибо! Отправил $
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот