LoginSignup
16
12

More than 5 years have passed since last update.

GoogleAppsScriptでカオナビのAPIを叩いてデータを取得する

Posted at

今年はアウトプットを頑張る年にしたいと思ったのに結局バタバタで1記事しか書けていませんでした。が、ちょっとだけ落ち着いて、本業に役立つスクリプトを新たに書いたので半年ぶりに投稿します。

元々スプレッドシートで管理していたものが最近Saasのシステムへ移行され、上手い具合にAPIも新規公開されたため、更新通知用のスクリプトを作り直しました。今回、対象としているシステムは人材管理ツールの「カオナビ」です。サイバーエージェント社やメルカリ社などIT系企業の多くが導入している有名なツールですが、通知系の機能が標準搭載されているものにプラスαで欲しかったため作りました。

カオナビAPI

管理画面から「公開API情報確認」というメニューがあり、そこで下記の情報が確認できます。これらのキーなどを参考/参照にGoogle Apps Scriptを書きます。

  • Consumer key
  • Consumer secret
  • シート情報(JSON形式でどんなデータがどうやって取れるかの説明)

アクセストークンの取得

処理を実行するにあたってアクセストークンを取得します。

code.js
function getAccessToken() {
  var CONSUMER_KEY = '<Consumer key>';
  var CONSUMER_SECRET = '<Consumer secret>';
  // アクセストークンの取得
  var tokenUrl = "<公開されているカオナビのアクセストークン取得用のURL>";
  var parameters = {
    method : 'post',
    payload : 'consumer_key='+CONSUMER_KEY+'&consumer_secret='+CONSUMER_SECRET ,
    muteHttpExceptions : true
  };
  var response = UrlFetchApp.fetch(tokenUrl,parameters);   
  var tokenResponse = JSON.parse(response.getContentText());
  return tokenResponse['data']['access_token']
}

APIを叩く

アクセストークンを用いて良しなに公開されているAPIを叩きます。もっと色々増えるといいなぁ。

code.js
function get1on1List(token) {
  var apiUrl = "<公開されているカオナビのAPIのURL>";
  var apiOptions = {
    headers : {
      "X-KAONAVI-TOKEN" : token
    },
    method : 'post'
  };
  var responseApi = UrlFetchApp.fetch(apiUrl, apiOptions);
  var responseJson = JSON.parse(responseApi.getContentText());
  return responseJson
}

あとは取れたJSONデータを色々と加工

今回は最新の一覧データとSlackの通知的なことがほしいなぁと思ったので、スプレッドシートへ吐き出すのと、直近のデータはSlackに飛ばすようにしてみました。

ここは特に変わったことしていないので割愛します。

ついでに宣伝

弊社はアドテクノロジー・マーケティングテクノロジーの事業を生業とする企業です。この業界では国内随一の成長を見せていると思いますので、よかったら気軽に遊びにいらしてください。フロントエンドからサーバサイド、インフラ、ネットワークまで幅広く仲間を募集中です!

【株式会社ジーニー】
http://geniee.co.jp/recruit/index.html
https://www.wantedly.com/companies/geniee-co

16
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
12