 <p>This is really complicated. I understand that you can edit your spreadsheets with Python using their API, Google tends to offer that ability on many of their web services and it's all done by sending HTTP post requests made of XML somehow, I hope you know that part, I don't.</p> <p>According to <a href="http://code.google.com/apis/spreadsheets/data/2.0/developers_guide_protocol.html#CreatingWorksheets" rel="nofollow noreferrer">this</a> you can at least add worksheets, read rows from other worksheets and write rows to worksheets. if you must, you could copy it one row at a time, however sending an additional POST request for each row seems like a horrible idea.</p> <p><strong>Edit:</strong></p> <p>I'm learning more and more about this, but still a long way off from solving your original problem. This <a href="http://www.xfront.com/REST-Web-Services.html" rel="nofollow noreferrer">overview of REST principles</a> goes over the basic style of interaction that goes on between programs on the web. Google seems to be following it religiously.</p> <p>It all takes place within the HTTP protocol, something I knew nothing about before today. In this <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html" rel="nofollow noreferrer">HTTP specification</a> the basic game is spelled out. Its not as dry as it looks, and maybe I'm just a huge geek, but I find it an inspiring read. Not unlike The Constitution of The United States.</p> <p>So since you want to "clone" a document, your going to be using a GET request for a particular worksheet, and then sending that worksheet back as the payload of POST.</p> <p>Getting closer :)</p>