\r\n\r\n
Pythonは優れたプログラミング言語です。構文は奇妙で珍しいと思われるかもしれませんが、簡単に習得して使用することができます。Minecraft Pi版をはじめ、さまざまなWebサイトや学術研究プロジェクトに対応しています。
この記事では、Pythonを使ってgooglesheetsを読み書きする方法を紹介します。もしあなたがPythonの旅を始めたばかりなら、Pythonを学ぶためのベスト5ウェブサイトが良い出発点です。
コードを書く前に、Googleフォームにいくつかの初期設定をする必要があります。
まず、自分用に新しいテーブルを作成します。すでにセットアップされている場合は、このステップは省略できます。
次に、共有オプションを設定する必要があります。署名認証を生成する必要がありますが、これは実際よりも難しく聞こえます。Google Developer Consoleに移動し、次の場所で新しいプロジェクトを作成します(または既存のものを使用します)。
プロジェクトに適した名前を指定し、「作成」をクリックします。
Google Apps APIでDrive APIを選択します。
Enableを選択します。
ここで、左側のメニューにある資格情報を選択します。
認証情報の作成」ボタンの小さな矢印をクリックします。
ここで、サービスアカウントキーを選択します。
service accountでApp Engineのデフォルトのサービスアカウントを選択し、フォーマットはJSONを選択します。
作成をクリックすると、.jsonファイルがダウンロードされるはずです。このファイルをプロジェクトディレクトリに移動し、creds.jsonにリネームします。 最後に、ファイルを開き、クライアントの電子メールを探します。プロジェクト名 appspot.gserviceaccount.com とします。 このメールアドレスを使って、Googleワークシートを共有します(右上の > share> enter email)。
こちらはGoogle Drive側です。
Pythonには大きく分けて2.7と3.xがあり、今回は2.7を使用しますが、どちらを使ってもかまいません。pythonwikiにその違いが書かれていますので、興味のある方はご覧ください。仮想環境をインストールするのもよいでしょう。これは、この記事の範囲を超えていますが、良い習慣です。
Microsoft Windowsをお使いの場合は、Pythonをダウンロードしてインストールする必要があります。Mac OSにはすでにPythonがインストールされています。WindowsやLinuxのマシンでしっかり追えるはずです。乗り換えた方がいいのかどうか、ぜひガイドを見てみてください。
まず、新しい端末を開きます。いくつかのPythonパッケージはpipでインストールする必要があります。これはお勧めのツールで、パッケージの管理が非常に簡単になります。Pythonに付属しています。
oauth2clientをインストールする必要があります。oauthはWeb認証のフレームワークです。その詳細は割愛しますが、すべてを正しく、安全に動作させるために必要なものです。pip:を使って簡単にインストールすることができます。
pip install oauth2clientまた、セットアップによっては、PyOpenSSLをインストールする必要があります:.
pip install PyOpenSSLここで、Anton BurnashevのGspreadをGitHubにインストールする必要があります。これは非常に良いライブラリで、Pythonを使ってgooglesheetsにアクセスするのが非常に簡単になるように設計されています。ここでも、pip:を使って簡単にインストールすることができます。
pip install gspread次に、お気に入りのテキストエディタ(私はSublime text 3を使用しています)を開いてください。新規にPythonファイルを作成し、プロジェクトのディレクトリ _input-output に google という名前で保存します。以下のようにコードをテストしてください。
print 'Hello, World!'ターミナルに戻り、プロジェクトディレクトリに移動します。cdコマンドを使用することで可能です。ファイルの一覧を表示するにはls、作業ディレクトリを表示するにはpwdを使用します。
プロジェクトディレクトリに移動したら、Pythonスクリプトを次のように実行します。
python google_io.pyこれで、コマンドライン上にHello, World! が表示されるはずです。
Pythonが正常に動作するようになったので、ライブラリの設定に移りましょう。hello worldのコードを削除してください。ここでGspreadをインポートして、再度コードを実行します。
import gspread何も問題がなければ、何も起こらない。もし、Xという名前のモジュールがない、Xは入力したモジュールの名前(Gspread)だ、というようなエラーが出たら、pipがモジュールを正しくインストールしたか、タイプミスがないかを再確認してください。
以下、スタートアップコードです。
import jsonimport gspreadfrom oauth2client.client import SignedJwtAssertionCredentialsjson_key = json.load(open('creds.json')) # json credentials you downloaded earlierscope = ['https://spreadsheets.google.com/feeds']credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'].encode(), scope) # get email and key from credsfile = gspread.authorize(credentials) # authenticate with Googlesheet = file.open("MUO_Python_Sheet").sheet1 # open sheetこれは、単に.jsonファイルからお客様の情報を取得し、それを使ってGoogleで認証するものです。次に、MUOu Pythonu シートというシートを開いてください。Pythonは大文字と小文字を区別するので、このコードが正しく入力されていることを確認してください。
これですべての設定が完了し、データの読み書きが簡単にできるようになりました。ここでは、一連のセル(この場合はすべての車のセル)を選択する方法を説明します。
all_cells = sheet.range('A1:C6')print all_cellsこんな感じです。
あまりいい感じではないでしょうか? Pythonはフォーマットに関係なく、オブジェクトの中身をダンプしています。この変数は、all-uセル変数に格納されているため、他のPythonオブジェクトと同様にアクセスすることができます。ここでは、すべてのセルの値をよりよい形式で印刷する方法を紹介します。
for cell in all_cells:print cell.valueこんな感じです。
セルは個別にアクセスできる(ただし、複数回アクセスすると遅くなることがある)。
A1 = sheet.acell('A2').value # this cell contains "Ford"また、セル座標を用いることもできる。
coord = sheet.cell(3, 0).value一列に並んだすべての値を簡単に取得することができます。
row = sheet.row_values(1) # first rowあるいは、列全体を取得することもできます。この場合、モデル行を取得します。
col = sheet.col_values(2) # modelsどちらの方式も、データの量はわからないということをお忘れなく。3行しかない場合、複数の余分な空セルが返されます。あらかじめ定義されたセルのブロックにアクセスする方が、ほとんどの場合、優れています。
ワークシートに書き戻すのも簡単で、Readと同じようにセル名や座標を使うことができます。
sheet.update_acell('C2', 'Blue')sheet.update_cell(2, 3, 'Blue')GitHubのプロジェクトページには、より多くの例が掲載されています。
重要なワークシートを書く場合は、安全なセルを検討するとよいでしょう。セルに値を格納し(私は「Don'tdeletethis」を使っています)、まずそのセルを読み取ります。もし内容が変わっていたら、ワークシートに列が追加されたり削除されたりしているので、そのまま書き続けないでくださいね。そのための方法を紹介します。
if sheet.acell('B3') != 'SAFETY':# something has changed in the sheet, DO NOT PROCEEDraise Exception("Oh My, I'm not ready for this.")else:# continue with your writingsheet.update_acell('C2','Blue')これは良い練習になります。スクリプトが誤って間違った列に書き込まないようにするもので、適切なバックアップの代わりにはなりません(バックアップは取っていますよね)。
基本がわかったところで、何かカッコイイことをやってみようLinuxでタスクをスケジュールするためにcronを使用する方法を学びます(またはWindowsの代替手段をチェックします)。フォトフレームをパワーアップさせたり、オフィスのダッシュボードを作ったりするのもいいかもしれませんね!私はそうしました。また、HerokuでPythonのサイトをホストするのはいかがでしょうか?
Excelも使っている方は、ExcelのデータをPythonスクリプトにインポートする方法を学びましょう。