2010-04-30 20 views
4

我学会了如何下载单个谷歌文档。但我正在尝试制作一个脚本,以文本格式下载我的所有数据,然后将它们合并到一个文本文件中。所以,我想知道如何实现下载部分,以便1可以像使用网络浏览器一样获取我所有文件的zip文件。这是我的newb脚本来获取单个文件。希望你可以建议一些调整,使其更有效。如何从shell下载所有的谷歌文档

#!/bin/bash 
token=$(curl -s https://www.google.com/accounts/ClientLogin -d [email protected] -d Passwd=blahblah -d accountType=GOOGLE -d service=writely -d Gdata-version=3.0 |cut -d "=" -f 2) 
set $token 
wget --header "Gdata-Version: 3.0" --header "Authorization: GoogleLogin auth=$3" "https://docs.google.com/feeds/download/documents/Export?docID=${resourceId}&exportFormat=txt" -O /tmp/${file[$i]}.txt 

在这里,我指定单RESOURCEID,如你所见。我应该只是推动许多resourceId -s在下载链接,让他们全部或有更好的办法?

+0

您正在使用'set'设置位置参数,但不使用它们。你正在使用一个名为“file”的数组,但没有定义它或索引变量“我”(并且没有似乎暗示的循环)。你的剧本还有更多吗? – 2010-04-30 16:16:10

+0

是的,有一个小循环,因为脚本一次下载4个文件,提供4个不同的resourceId-s。不知何故,我必须通过反复试验才能使用,我认为这可以做得更好。这个“标记”是由newline分隔的3个“key = value”对的数组,我只需要这个数组中最后一项。 – Temujin 2010-04-30 16:32:00

+0

最后一个数组项:'$ {token [@]:-1}'(当有负偏移量时需要空格)或第三项:'$ {token [2]}'(零索引)。你可以通过使用最后一个元素语法来消除'cut'。无论“curl”的输出是“parts = part1 part2 part3”还是“parts = part1 part2 part3”,它都可以工作。你需要同时使用'curl'和'wget'吗? – 2010-04-30 16:43:16

回答

2

如果你不介意使用非原生的工具,我会强烈建议:http://code.google.com/p/googlecl/

但是,考虑到这一问题的时代,你可能已经想通了这一点。

+0

”2015年6月8日:由于OAuth1的调整,GoogleCL目前处于崩溃状态,并且可能会继续如此。感谢您多年来的支持,并对没有事先通知的道歉表示歉意。“ – Kappe 2017-02-03 11:09:09