1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HRMOS勤怠by IEYASUにAPI連携するGAS作っていく #1

Last updated at Posted at 2024-07-21

非エンジニアですが、バックオフィスの効率化を、生成AIの助けと先人の皆様のお知恵を借りながらやっていきます。僭越ですが、こちらに記録として残していくことにします。

実現したいこと

  • HRMOS勤怠の月次レポートの一覧から対象月の全社員分の勤務データを取得し長時間労働のアラート対象者リストを作成する
  • アラート対象者リストをもとに対象社員へアラートメールや産業医面談の勧奨/依頼メールを送信する
  • アラート対象者リストをもとに対象社員の上席社員たちにレポートメールを送信する

HRMOS勤怠 by IEYASU」のAPI連携で、月次レポート一覧を取得し、Goolgeスプレッドシートに転記、さらに特定の条件を超過した長時間労働者について別のGoogleスプレッドシートにアラート対象者リストとして記載していく。
また、このアラート対象者リストから一定の条件の社員に対してアラートメールや産業医面談の勧奨や面談設定を要請するメールを送信する。
さらに上司に対してもレポートメールを送信する。

方針

私はコードを書けませんので、実際の作業はネット上にある先人のみなさまの記事と生成AIを頼りにして実装していきます。

  • 生成AIは有料契約しているChatGPT 4o を使用します(データ提供はoff)
  • 作業手順についてもネット上の記事と生成AIを活用していきます
  • 当社はGoogle Workspace を使用していますのでデータは基本的にGoogle Drive や Google スプレッドシートで管理します
  • GASのソースコードはいったん直接記述することとし、いずれはGithubで管理することを検討します

この記事のゴール:まずはAPI連携できるようにする

ではさっそくAPI連携ができるように準備していきましょう。
スプレッドシートを新規作成して、拡張機能のApps Scriptからエディタを開きます。ここに記述するコードをchatGPTに書いてもらいます。
最初のプロンプトはこんな感じにしてみます。

プロンプト
HRMOS勤怠からAPI連携をしてGoogleスプレッドシートに社員1人1レコードのデータとして転記します。
HRMOS勤怠のAPI仕様書は下記です
https://ieyasu.co/docs/api.html

APIのURLに使用するcompany_nameはGASのプロパティとして保存します。
プロパティ名はHRMOS_COMPANY_URL とします。
API KEYのシークレットKEYもGASのプロパティとして保存します。
プロパティ名はHRMOS_API_KEY とします。
まずはプロパティとして保存するコードを生成してください。

API連携ができるようになったら「月次レポートの一覧」で社員の勤怠データを取得し、スプレッドシートに転記していきます。まずはプロパティへ保存後にAPI連携のコード作成を指示します。

結果として、こんなコードを指示されました。

function saveProperties() {
  // スクリプトプロパティを取得
  var scriptProperties = PropertiesService.getScriptProperties();

  // 保存するプロパティを設定
  var companyName = 'your_company_name'; // ここにあなたのcompany_nameを入力
  var apiKey = 'your_api_key'; // ここにあなたのAPI_KEYを入力

  // プロパティを保存
  scriptProperties.setProperty('HRMOS_COMPANY_URL ', companyName);
  scriptProperties.setProperty('HRMOS_API_KEY', apiKey);

  Logger.log('Properties saved successfully.');
}

プロパティ登録は最初にしか使用しないので、新たに regist.gs というスクリプトを作成して、このコードをペーストします。そしてcompany_nameとyour_api_keyを適切に置き換えてから実行してみます。
結果、実行ログにProperties saved successfully. と表示されましたので、うまくプロパティに登録できたようです。
Apps Scriptの左側メニューの歯車マークの「プロジェクトの設定」に「スクリプト プロパティ」があり、実際にプロパティとして保存されているか確認できます。

Tokenの発行

次にAPI仕様書のAuthenticationを実行して、API連携に必要なTokenを取得します。
Basic認証云々という記述があり、なんか手順がありそうです。よくわからんのでググってみますと、GASとHARMOSとSlackではじめる勤怠Bot1という記事をみつけました。こちらのコードを参考にさせていただき、まずはコード.gsのほうにgetToken関数を記述します。

function getToken() {
  const ps = PropertiesService.getScriptProperties()
  const apiKey = ps.getProperty('HRMOS_API_KEY')
  const endPoint = 'https://ieyasu.co/api/' + ps.getProperty('HRMOS_COMPANY_URL') + '/v1/authentication/token'
  const headerInfo = token => ({
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + token
  })
  const options = {
    method: 'get',
    headers: headerInfo(apiKey),
    "muteHttpExceptions": true,
  }
  const response = UrlFetchApp.fetch(endPoint, options)
  const json = JSON.parse(response.getContentText())
  return json.token
}

変数tokenにトークンが入るか確認するために、最後のJSONをパースして返すところ(16行目のreturn のところ)にブレークポイントを設定しデバッグ実行させます。するとHRMOS勤怠へのログイン認証が要求されましたので(初回のみ)、認証します。
デバッガで変数tokenの内容を確認していくと、ばっちりトークンが入っていました。トークンは24時間しか期限がないため、このgetToken関数はそれぞれの処理の冒頭で実行し、取得したトークンを使ってAPI連携をさせていくことになります。

ということで初回はここまで。

参考文献

  1. GASとHARMOSとSlackではじめる勤怠Bot mikan Developers' Blog

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?