Загрузите неопубликованные электронные таблицы Google в формате CSV - программирование
Подтвердить что ты не робот

Загрузите неопубликованные электронные таблицы Google в формате CSV

У меня есть электронная таблица Google, которая не была опубликована, но доступна только для тех, у кого есть ссылка на доступ. Хотя я могу получить доступ к данным в формате CSV из своего браузера, даже если я не зарегистрирован в своей учетной записи Google (то есть анонимный доступ разрешен), я не могу загрузить данные из командной строки с помощью wget, для instante, Я нашел несколько веб-страниц с некоторыми инструкциями по созданию URL-адреса загрузки, но до сих пор я не имел успеха. Есть ли простой и понятный способ сделать это, или мне нужно будет использовать некоторую библиотеку данных Google для доступа к этим данным?

4b9b3361

Ответ 1

Теперь я могу ответить на вопросы, поэтому я оставлю его ответом навсегда (вставка из моего предыдущего комментария).

Моя проблема заключалась в том, что я не хранил cookie правильно. В то время я использовал программу Python для ее загрузки. Это фиксировало проблему, о которой я сообщал:

# Cookie management 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(CookieJar())) 
csv_data =  csv.reader(opener.open(url))

Ответ 2

Возможно, я неправильно понимаю, что вы пытаетесь сделать, но я нашел решение в этой статье, которое отлично подходит для меня.

В статье автор создает ссылку для загрузки таблицы в виде файла XLS (используя "& output = xls" ), но я попытался "& output = csv" и успешно загрузил правильный CSV файл.

Здесь ссылка для загрузки на мою "Загрузите тестовую таблицу", построенную именно так, как предложил автор статьи, но с заменой "csv" на "xls":

https://docs.google.com/spreadsheet/ccc?key=0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc&output=csv

Ссылка анонимна (т.е. "Любой, у кого есть ссылка, может видеть" ), и я загрузил ее, не войдя в мою учетную запись Google. Я признаю, что я не использовал wget для этого (я просто использовал браузер - у меня не было wget), но я не могу придумать, почему wget не будет работать так же хорошо.

На самом деле, я просто схватил копию wget и попробовал ее, и она также правильно загружает файл:

% wget --no-check-certificate --output-document=test.csv 'https://docs.google.com/spreadsheet/ccc?key=0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc&output=csv'

< bla bla bla, reams of output from wget >

% cat test.csv
Foo,Bar,Baz
1,2,3
4,5,6

Итак, вы идете...

Ответ 3

Я могу получить URL-адрес wget из общедоступных URL-адресов электронных таблиц, которые выглядят следующим образом:

https://docs.google.com/spreadsheets/d/LONG_ID_STRING/edit?usp=sharing

изменив их так:

https://docs.google.com/spreadsheets/d/LONG_ID_STRING/export?format=csv

чтобы моя команда wget выглядела так:

$ wget "https://docs.google.com/spreadsheets/d/LONG_ID_STRING/export?format=csv"

Убедитесь, что вы сначала делитесь электронной таблицей с синей кнопкой "Поделиться" в правом верхнем углу, а затем "Получите доступную ссылку".

Ответ 4

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

https://docs.google.com/spreadsheets/d/1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw/pubhtml?widget=true&amp%3Bheaders=false#gid=2120833204

становится:

https://docs.google.com/spreadsheets/d/1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw/export?format=csv&id=1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw&gid=2120833204

Ответ 5

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

curl -o /path/to/file/you/want/csv/to/go.csv 'https://docs.google.com/spreadsheet/ccc?key=[the-id-of-your-spreadsheet]&output=csv' -L

the -L - вот трюк, в котором google часто перемещает csv, но отправит вам ссылку перенаправления. -L сообщает curl следовать переадресации, пока не приземлится на файл.

вы можете найти id своей таблицы, открыв ее на диске Google и посмотрев URL-адрес

https://docs.google.com/spreadsheets/d/[idwillbehere]/edit#gid=0