column

外部との連携 KompiraでGoogle SpreadSheetの読み書きをする

KompiraでExcelファイルの読み書きをするという記事でKompiraからExcelファイルを読み書きする方法をご紹介しました。今回の記事では同様にGoogleスプレッドシートに対してアクセスする方法をご紹介します。

※KompiraのバージョンがKompira 1.4.9.post5以前の場合には、Googleスプレッドシートにアクセスする際に警告メッセージが出る場合があります。1.4.9.post6以降のバージョンにアップデートするか、次のように必要となるPythonモジュールをアップデートしてから、Kompiraのプロセスを再起動してください。

 
Pythonライブラリの準備

Excelの場合と同様に、Pythonの外部ライブラリを使用します。今回はスプレッドシートを操作する”gspread”とOauth認証関連の”oauth2client”を導入します。
Kompiraサーバーにログインした後に、以下のようにしてモジュールをインストールします。

 
Googleスプレッドシートの作成

Googleアカウントを取得して、スプレッドシートを1つ作成します。ここでは”kompira”という名前のスプレッドシートを作成して、A1セルに”Hello, world”と記載しました。
Googleスプレッドシート

Google API Consoleページで、「プロジェクトの作成」をクリックして新規プロジェクトを作成します。

プロジェクト作成

上図では”kompira”という名前で作成しました。名称は任意で結構です。

次にAPI Console画面で、「有効にする」をクリックします。

Drive API

続いて、左の「認証情報」を選んで、画面から「認証情報を作成」ボタンをクリック。「サービスアカウントキー」を選択します。認証情報

適当なサービスアカウントを選択して、”Key type”は”JSON”を選択して、”Create”をクリックします。

サービスアカウントキー

この後、認証キー情報のJSONファイルがダウンロードされます。このファイルはKompiraサーバーの”kompira”アカウントから参照できるディレクトリに転送しておきます。
今回は”/tmp/***.json”となるように保存しました。

次に先に作成したスプレッドシートにユーザーを登録します。ダウンロードしたJSON形式の認証情報ファイルを開いてみると、”client_email”をキーとした次の様な情報が記述されています。

※記載内容はサービスアカウント名やプロジェクト名称によって変わります。

このアドレスをスプレッドシート右上の「共有」ボタンを押した画面で登録します。

アドレスを登録

ここまでで、認証情報の設定とスプレッドシートの準備ができました。続いてKompira上でのジョブフローを作成していきましょう。

 
ライブラリとジョブフローの作成

まずはライブラリを用意します。ここでは”gspread”という名前で作成しました。
KompiraでExcelファイルの読み書きをする」の場合と同様に、1つのセルの値を読み出す”get_cell_value”というメソッドを実装してみます。

次に、このメソッドを利用する”sample”ジョブフローを作成します。

スプレッドシートは次のように、名称が”kompira”、シート名が”シート1″になっています。
シート

ジョブフローは次のように記述できます。

実行すると次のようにコンソールに表示されます。

コンソール画面

※ここで”InsecurePlatformWarning”などの警告メッセージが表示される場合には、冒頭でご案内した通りに、Kompira本体のバージョンアップを行うか、Pythonモジュールの入れ替えを行ってください。

このようにしてgspreadモジュールのAPIを呼び出す事で、Googleスプレッドの値を読み込み・記入する事が可能です。今回は”acell”メソッドを使った指定セル値の読み込みのみをご紹介いたしましたが、他にも列指定やシート全体の読み込み、記入をはじめ、シートの作成なども行えます。詳細はgspread API Referenceをご覧のうえ、必要なライブラリ・メソッドを追加してご利用ください。