Google App EngineのデータストアをSpreadsheets Data APIを使って登録
前回「Spreadsheets Data APIを使ってGoogle App Engineのデータストアに登録 - めも帖」ということで、GoogleドキュメントにあるデーターをGoogleAppEngine(GAE)に入れるというのをしました。
今回は逆に、GoogleAppEngineのデータストアからGoogleドキュメントに入れるのを試してみました。
過程
自分のローカルにあるデータストアのデータ
これをGoogleドキュメントに入ってる
試してみて
実際に出来たんですが、ローカルでのテストなので実際の環境ではエラーが出るかも。それぐらに遅いんですよね...
ソース
#!/usr/bin/env python # -*- coding: utf-8 -*- import os,sys,re import wsgiref.handlers from google.appengine.ext import webapp import gdata.spreadsheet.text_db import gdata.service import atom.service import gdata.spreadsheet import atom import gdata.spreadsheet.service import gdata.urlfetch # model sys.path.append('./model/') from Railway import * class MainHandler(webapp.RequestHandler): def get(self): document_name = 'test1' sheet_name = 'book' email = 'xxxxxxx@gmail.com' password = 'xxxxxxx' gd_client = gdata.spreadsheet.service.SpreadsheetsService() gd_client.email = email gd_client.password = password gd_client.ProgrammaticLogin() # ドキュメントを探す feed = gd_client.GetSpreadsheetsFeed() for entry in feed.entry: if entry.title.text == document_name: current_key = entry.id.text.split('/')[-1] break else: raise ValueError('document not found') # シートを探す feed = gd_client.GetWorksheetsFeed(current_key) for entry in feed.entry: if entry.title.text == sheet_name: current_worksheet_id = entry.id.text.split('/')[-1] break else: raise ValueError('sheet not found') # for idx, value in enumerate(('id', 'name', 'linename', 'address')): gd_client.UpdateCell(row=1,col=(idx + 1),inputValue=value,key=current_key,wksht_id=current_worksheet_id) # for station in Railway.all(): entry = gd_client.InsertRow({ 'id' : station.key().name(), 'name' : station.name, 'linename': station.linename, 'address' : station.address, },current_key,current_worksheet_id) def main(): application = webapp.WSGIApplication( [ ('/test/', MainHandler), ], debug=True) wsgiref.handlers.CGIHandler().run(application) if __name__ == '__main__': main() else: print 'error'