LoginSignup
1
0

More than 1 year has passed since last update.

人材紹介・人材派遣向け業務管理クラウドシステム”porters”をAPIで自動操作しよう

Posted at

portersとは

人材業務(特にエージェント業務)に必要な機能を備えたクラウドシステムです
https://hrbc.porters.jp/
人材紹介・人材派遣向け管理システム _ PORTERS(HRBC、HRビジネスクラウド).png

Portersのデータ入出力、編集を自動化したい!

今回は、このツールをGoogleのスプレッドシート&GASで自動操作していきたいと思います

初期設定

コードを書く前に必要なのは

  1. アプリを発行してもらう
  2. システムのデータベースとアプリの連携を行う
    お2つの操作です

1. アプリを発行してもらう

portersを運営しているポーターズ株式会社 の担当者に依頼を行うます
数日するとこんな感じで
Fwd_ PORTERS Connect API 接続情報のご連絡:App Id - wagatsuma.itsuki@lmi.ne.jp - Lmi.ne.jp メール.png
image.png

必要な情報が届きます

この時App IdSecretRedirect URLをメモっておきましょう

2. システムのデータベースとアプリの連携を行う

上でもらったアプリに対して、「ウチのporters環境を操作していいよ~」という権限を与えます

2-1. まずURLを作成する

上記App IdSecretRedirect URLを使ってURLを作成します
例として↓みたいな感じに

https://api-hrbc-jp.porterscloud.com/v1/oauth?app_id=123345678&redirect_url=https://www.hogehoge.co.jp&response_type=code&scope=partition_r,user_r,field_r,option_r,client_r,client_w,recruiter_r,recruiter_w,job_r,job_w,candidate_r,candidate_w,resume_r,resume_w,process_r,process_w,activity_r,activity_w,contract_r,contract_w,sales_r,sales_w,phase_r,phase_w,attachment_r,attachment_w,opportunity_r,opportunity_w,recruiter_r,recruiter_w

app_id=123345678yとredirect_url=https://www.hogehoge.co.jpの部分は
自身のApp IdRedirect URLに書き換えてください

scope=以下の部分はいったんすべての権限をスコープとして付与した例を書きました
「セキュリティーの問題から、APIにはJOB情報の読み込みだけを許可したい」であれば「job_w」だけを書くなど、調整してみてください

どのスコープを付与すると、どの権限が与えられるのか、はこちらScope Listを参考にしてください

2-2. URLをブラウザに打ち込んで認証を完了させる

上で作ったURLをブラウザに打ち込んでみてください
IDとPassなどが求められるので入力いただければ、連携が完了します

コーディング

1. 大前提の注意

portersとGASの相性がいまいちでして、
実行ボタンからAPIを叩くをうまくいかず、トリガーを設定して実行しAPIを叩くとうまくいきます
(これは、実行ボタンから実行されたスクリプトとトリガーから実行されたスクリプトで
使われているサーバが異なっていて、portersでは前者のサーバからのアクセスに応じないようになっているかららしい)

2. いよいよAPIを叩いてみよう

2-1. Partition IDを確認する

Partitionとは、操作対象のpoters環境を契約している組織のことです
これをまずは取得しましょう。
以下のコードをエディタに入力してください

サンプルコード
code.js
//各種変数の設定を行うスクリプト
const requestHost = "api-hrbc-jp.porterscloud.com" 
const redirectUrl = "https://★★"
const appId = "★★★★★" 
const secret = "★★★★"
const appName = "★★★★"

//上記変数を用いてTokenを取得するスクリプト
function getToken(){
  console.log("Codeを取得します=====")
  let oath_url = 
    "https://"+requestHost
    +"/v1/oauth?app_id="+appId
    +"&redirect_url="+ redirectUrl
    +"&response_type=code_direct"
  var response_oath = UrlFetchApp.fetch(oath_url,{'method' : "get"})
  let response_oath_xml = response_oath.getContentText();
  console.log("Oath認証をクリアしました\nレスポンスは\n"+response_oath_xml)

  let code_infomation = response_oath_xml.match(/<Code>(.*)<\/Code>/);
  let code = code_infomation[1];
  console.log("Codeを抽出しました\n Codeは["+code+"]です")

  console.log("Tokenを取得します=====")
  const grant_type = "oauth_code"
  const getToken_url = 
    "https://"+requestHost+"/v1/token?"
    +"grant_type="+grant_type
    +"&app_id="+appId
    +"&secret="+secret
    +"&code="+code

  const response_getToken = UrlFetchApp.fetch(getToken_url, {'method' : "post"});
  let response_getToken_xml = response_getToken.getContentText()
  let token_infomation = response_getToken_xml.match(/<AccessToken>(.+)<\/AccessToken>/);
  let token = token_infomation[1]
  console.log("Tokenの取得に成功しました\nTokenは["+token+"]です");
  return token  
}

//メインの関数はこれ。
function getPartitionId() {
  var token = getToken()
  var url = root_url + "partition?request_type=1"
  
  var header = {
    'X-porters-hrbc-oauth-token': token
    }

  var option = {
    method: 'get',
    headers: header
  }

  var res = UrlFetchApp.fetch(url,option)
 
  var response_xml = res.getContentText()
  console.log(response_xml)
}

無題のプロジェクト - プロジェクトのトリガー - Apps Script.png
こんな感じでトリガーを設定しましょう
download.png
トリガーが実行されると、実行結果にこのようなログが書き込まれます
ここの<Partition.P_Id></Partition.P_Id>で囲まれた数字がPartition IDになります

お見事!無事APIを叩くことに成功しました!
次の記事では、実際にporters内のデータを書き出したり、入力したりしてみます

1
0
0

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
1
0