Enterprise 技術情報 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 API Consoleページで、「プロジェクトの作成」をクリックして新規プロジェクトを作成します。
上図では”kompira”という名前で作成しました。名称は任意で結構です。
次にAPI Console画面で、「有効にする」をクリックします。
続いて、左の「認証情報」を選んで、画面から「認証情報を作成」ボタンをクリック。「サービスアカウントキー」を選択します。
適当なサービスアカウントを選択して、”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の機能
-
- フィールド修飾子でフィールドの入力内容に制約を設ける
- Kompiraでの文字列のパターンマッチング
- Kompira上でWikiページを作成する
- スケジューラを使って定期的にジョブを実行する
- ジョブフローを実行するフォームを作成する
- テーブル内の情報を選択して処理を実行する
- ジョブフローに権限設定をする
- ジョブフロー画面の各種設定
- Pythonで記述された処理をKompiraから呼び出す
- Kompiraオブジェクトのプロパティ,メソッド,フィールドを扱う
- Windowsでリモートスクリプトを実行する(その1)
- Windowsでリモートスクリプトを実行する(その2)
- Kompira上のデータをバックアップする(その1)
- Kompira上のデータをバックアップする(その2)
- Kompira上のデータをバックアップする(その3)
外部との連携
-
- Prometheusからの通知をKompiraで受信する
- Kompira cloud Pigeonを利用した通知電話の利用
- ネットワーク機器へのコマンド投入
- KompiraからWindowsGUIアプリケーションを操作する (1/2)
- メールを送信する
- メール受信をトリガーにしてジョブフローを実行する
- アラートメールをフィルタリングして転送する
- チャネルを利用して外部システムからデータを受信する
- Webページから内容を取得する
- Redmineへ新規チケットを登録する
- Redmineでのチケット作成をKompiraに通知する
- Kompira REST APIを利用して外部からジョブフローを実行する
- Kompira REST APIを利用して外部からオブジェクト情報を取得する
- KompiraからSlackに通知する
- Slackでの投稿をKompiraに通知する
- KompiraからTwilioで電話をかける
- Zabbixからの通知をKompiraで受信する
- syslogをKompiraで受信する
- snmptrapをKompiraで受信する
- KompiraでExcelファイルの読み書きをする
- KompiraでGoogle SpreadSheetの読み書きをする
- Active Directoryから情報を取得する
- Active Directoryにユーザーを登録する