PythonでGoogle spreadsheetからレコードを取得しリストに変換する方法
スプレッドシートのレコードオブジェクトをシート名を指定し取得します。
dbClient = gdata.spreadsheet.service.SpreadsheetsService(username, passwd)
dbClient.ProgrammaticLogin()
q = gdata.spreadsheet.service.ListQuery()
q['title'] = '<スプレッドシートの名前>'
feed = dbClient.GetSpreadsheetsFeed(query=q)
spread_id = feed.entry[0].id.text.rsplit('/',1)[1]
records = dbClient.GetListFeed(spread_id).entry
上記の操作で取得できるオブジェクトのリストは、中身の構造が…よくわかりません。。。 そんななので、text_dbというモジュールでspreadsheetを扱いやすいように変換します。 text_dbを使うとスプレッドシートをDBのように扱うことができます。
text_dbでスプレッドシートのrowを辞書型に変換しリストにappendしていけば辞書型のリストを取得できます。
articles = []
for entry in records:
article = gdata.spreadsheet.text_db.Record(row_entry=entry)
articles.append(article.content)
特定のカラムのみ取得したい場合はdict内包表記でdictに変換された行のデータをフィルターすればOK。 下記例では項目名が'id'および'title'のカラムのみ含むdictを生成しリストにappendしています。
articles = []
for entry in records:
article = gdata.spreadsheet.text_db.Record(row_entry=entry)
col = article.content
id = {k: v for k, v in col.items() if k == 'id' or k == 'title'}
articles.append(id)
with open('<ファイルネーム>', 'w') as f:
json.dump(articles, f)