はじめに
働き方改革の一環として、オフィスに出社せず在宅やコワーキングスペースで働くリモートワーク制度や、オフィス勤務でも座席が固定ではないフリーアドレス制度など、さまざまな制度が企業に導入されつつあります。
サイボウズでも、オフィス以外で働くメンバーがいたり、営業など席を外すことの多いメンバーはフリーアドレス制を利用して「フリー席」と呼ばれる席で働いています。
そうした場合、気になるのは、チームメンバーが「今日は、オフィスorリモートで働いているのか」「オフィスのどこで働いているのか?」です。
この記事では、Garoonの在席情報とkintoneを使って、自分の働き方を自動で共有するカスタマイズを紹介します。
完成イメージ
kintoneの「働き方」アプリに登録されているレコードから、その日(曜日)の働き方をGaroonの在席情報の「ステータス」に自動で反映します。
- 「会社」で働く場合は、固定席かフリー席かを表示します。
- kintoneアプリの「座席番号(固定席の場合のみ)」フィールドに値が入っている場合は、[ステータス]が「固定席」、入っていない場合は「フリー席」と表示します。
- 「固定席」と表示する場合は、在席情報の[メモ]に、「座席番号(固定席の場合のみ)」フィールドの値を表示します。
システム構成図
Google Apps Scriptに登録したスクリプトを1日1回実行し、次のことを行います。
このスクリプトでは、Google Apps Scriptでログイン情報を設定したcybozu.comユーザーのGaroon在席情報のみを更新します。
- kintoneの「働き方アプリ」からログイン名をキーに、働き方レコードを取得します。
- 取得したレコードを使って、曜日をキーにその日の働き方をGaroon在席情報に反映します。
下準備
- kintoneおよびGaroonを利用できるアカウント
- Googleアカウント(Google Apps Scriptを利用するため)
詳細設定
Garoon
Garoonの在席情報のステータスを追加します(参照: 在席確認:ステータスを追加する )
- ヘッダーのユーザー名をクリックし、[個人設定]をクリックします。
- [各アプリケーションの管理]タブを選択します。
- [在席確認]を選択肢、[ステータスの設定]をクリックします。
- 「ステータスの設定」画面で、1行ずつ「固定席」「フリー席」「自宅」「コワーキングスペース」を入力します。
入力後、[設定する]ボタンをクリックして保存します。
注意事項:
このカスタマイズを利用する際は、ステータスの自動設定を無効にしてください。
ステータスの自動設定が有効な場合、1日の最初にGaroonへログインしたとき、「ステータス」は自動で「在席」に上書きされます。
ステータスの自動設定については、
在席確認:ステータスの自動設定を利用する
を参照してください。
kintone
「社員名簿」アプリと「働き方」アプリを作成します。
社員名簿
- アプリストア の「 社員名簿 」アプリをもとに作成します(参考: アプリストアからアプリを追加する )
- アプリの設定画面から、「ログイン名」フィールドを追加します。
フィールド名 フィールドタイプ フィールドコード 備考 ログイン名 文字列(1行) loginName 「必須項目にする」にチェックします
働き方アプリ
-
「はじめから作成」で、アプリを新規に追加します。(参考: アプリをはじめから作成する )
-
次のようにフィールドを追加します。
フィールド名 フィールドタイプ フィールドコード 備考 社員番号 ルックアップ employeeNumber - 「必須項目にする」にチェックします
- 関連付けるアプリ:社員名簿
- コピー元のフィールド:社員番号
- その他のフィールドのコピー:
- 社員名簿の「氏名」→「氏名」
- 社員名簿の「ログイン名」→「ログイン名」
ログイン名 文字列(1行) loginName - 「必須項目にする」にチェックします
氏名 文字列(1行) name 座席番号(固定席の場合のみ) 文字列(1行) seat テーブル ー Table テーブルの内容は次のように設定します。
フィールド名 フィールドタイプ フィールドコード 備考 曜日 チェックボックス week - 「必須項目にする」にチェックします
- 以下の項目を追加します
- 月
- 火
- 水
- 木
- 金
- 並び:横
場所 ドロップダウン location - 「必須項目にする」にチェックします
- 勤務場所については、今回は以下の項目を追加します。
- 会社
- 自宅
- コワーキングスペース
Google Apps Scriptの設定
kintoneの「働き方」アプリに登録されたレコードを使ってGaroonの在席情報を更新するスクリプトを適用します。
スクリプトを定期実行(1日1回)するよう、トリガーも設定します。
-
Google App Script を開き(要Googleログイン)、[新規スクリプト]ボタンをクリックします。
-
エディタ部分に 後述のサンプルコード を貼り付けます。
-
[ファイル]メニューから、[保存]を選択し、保存します。
適当なプロジェクト名(ここでは「grkin-workstyle」としました)を入力し、[OK]ボタンをクリックします。
-
スクリプトのプロパティを使って、cybozu.com環境やユーザー名・パスワードを設定します。
[ファイル]メニューから、[プロジェクトのプロパティ]を選択します。
[プロジェクトのプロパティダイアログ]が表示されるので、[スクリプトのプロパティ]タブを選択します。 -
[行を追加]リンクをクリックし、次のプロパティを入力します。
プロパティ 値 SUBDOMAIN cybozu.com環境のサブドメインを入力します
「xxxxx.cybozu.com」のxxxの部分ですUSERNAME cybozu.com環境にログインするユーザー名を入力します PASSWORD cybozu.com環境にログインするパスワードを入力します WORKSTYLE_APP_ID 働き方アプリのアプリIDを入力します 3つすべて入力したら、[保存]ボタンをクリックします。
-
スクリプトの実行タイミングを設定します。
[編集]メニューから、[現在のプロジェクトのトリガー]を選択します。 -
[トリガーを追加]ボタンをクリックします。
-
次のように設定し、[保存]ボタンをクリックします。
項目 値 実行する関数を選択 「main」を選択します 実行するデプロイを選択 「HEAD」を選択します イベントのソースを選択 「時間主導型」を選択します 時間ベースのトリガーのタイプを選択 「日付ベースのタイマー」を選択します 時刻を選択 スクリプトを実行したい時間帯を選択します。
ここでは「午前7時〜8時」を選択します。トリガーが追加されます。
設定は以上です。
「午前7時〜8時」にトリガーを設定したので、毎日午前7時〜8時の間にスクリプトが1回実行されます。
動作確認
- kintoneの「働き方」アプリに、Google Apps Scriptでログイン情報を設定したユーザーのレコードを登録します。
- Google Apps Scriptの画面で、「関数を選択」リストで「main」を選んで、[▶]ボタンをクリックします。
サンプルコード
以下のソースコードをGoogle Apps Scriptsに貼り付けてください。
|
|
サンプルコードの解説
今回のプログラムのポイントは次のとおりです。
- 46-56行目:
- 「働き方」アプリから、「ログイン名」フィールドがGoogle Apps Scriptのスクリプトのプロパティで設定したUSERNAMEに一致するレコードを1件取得します。
- UrlFetchApp.fetch では、GETのときにリクエストパラメーターをつけてリクエストできないため、 複数のレコードを取得する を利用します。
- 63-101行目:
- 働き方の詳細が記録されているテーブルの中身を使って、曜日のプロパティをもつオブジェクトに整形します。
- 「場所」フィールドの値が "会社" かつ「座席番号(固定席の場合のみ)」フィールドに値があれば、「固定席」とします。
- 「場所」フィールドの値が "会社" かつ「座席番号(固定席の場合のみ)」フィールドが空の場合、「フリー席」とします。
- 108-123行目:
- Garoonの 在席情報を更新する(ログイン名を指定) を使って、在席情報を更新します。
おわりに
今回、固定席の場合はkintoneのレコード情報を使って「メモ」に座席番号を表示しました。
手動での設定になりますが、フリー席も在席情報の「メモ」(参照:
在席情報の変更
)に「xxxの近く」と設定すると、より詳細な情報も伝えることができるのでおすすめです。
このサンプルではGoogle Apps Scriptでログイン情報を設定したcybozu.comユーザーのGaroon在席情報のみを更新しますが、コードを書き換えることで「働き方」アプリに設定した全員分の在席情報も更新できます。
利用しているAPI
- Garoon REST API
- kintone REST API
このTipsは、2020年3月版Garoonとkintoneで動作を確認しています。