Kompira

Menu Menu

Enterprise Technical information

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

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

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

 

$ sudo pip uninstall 'requests'
$ sudo pip install 'requests[security]'
$ sudo restart kompirad
$ sudo restart kompira_jobmngrd

 

Pythonライブラリの準備

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

 

$ sudo pip install gspread
$ sudo pip install oauth2client

(追記) Kompira1.5以降の場合、モジュールのインストールは以下のようになります。

 

$ sudo /opt/kompira/bin/pip install gspread
$ sudo /opt/kompira/bin/pip install oauth2client

 

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”をキーとした次の様な情報が記述されています。

 

  "client_email": "kompiraserver@kompira-167702.iam.gserviceaccount.com",

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

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

アドレスを登録

 

APIライブラリの設定
APIライブラリの設定画面で、作成したプロジェクトにAPIライブラリを追加します。

外部からGoogle SpreadSheetにアクセスするためには、以下の2つのライブラリが必要となります。

 

  • – Google Drive API
  • – Google Sheets API

 

 

APIライブラリを選択し、「有効にする」ボタンを押下してください。

プロジェクトのダッシュボードで、追加した2つのAPIが有効化されていることを確認できます。

 

 

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

 

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

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

ライブラリ「gspread」

 

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name('/tmp/Kompira-a97a4eebf428.json', scope) # 先にコピーした認証ファイル
gc = gspread.authorize(credentials)

def get_cell_value(filename, sheet_name, cell): # 引数はファイル名、シート名、セル番号
	wb = gc.open(filename)
	ws = wb.worksheet(sheet_name)
	return ws.acell(cell).value

 

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

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

 

シート

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

ジョブフロー「sample」

 

[val = ./gspread.get_cell_value("kompira", "シート1", "A1")]
-> print(val)

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

 

コンソール画面

 

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

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

スタートガイド

Kompiraジョブフローの基礎

ジョブフローの簡単な例

Kompiraの機能

外部との連携