【業務改善】Yoomで勤務表を自動で作成する

# 勤務表を自動で作成したい
弊社の勤怠はスプレッドシートで1ヶ月ごと1スプレッドシートで管理しています。
そのため、月初めには必ず、勤務表のフォーマットを手動でコピーして、その月の分の勤務表を作成する作業があります。
面倒な作業ではないのですが、月初めの出社時に勤務表作成を忘れており、退社時に慌てて作業することが多かったので、Yoomの勉強もかねて自動で勤務表を作成するフローを作成することにしました。

# Yoom(ユーム)とは
様々なSaaS・AIと連携した独自の業務ツールをノーコードで作成できるツール。
主に以下の3種類のツールを用いて作成することができ、組み合わせて作成することも可能。
無料版だとタスク実行が100回/月の制限あり。
ちなみに、勤務表作成のツールにYoomを選んだ理由は、無料版の範囲で手動実行だけでなく、トリガー実行も対応しているためです。
今回は***フローボット***のみを使用して勤務表作成の自動化を行いました。

### フローボット
他アプリと連携することで、様々なアクションを自動的に実行することが可能。
実行方法は、手動実行の他に、時間やフォームに情報を送信したタイミングをトリガーとして自動で実行させる方法がある。

### 入力フォーム
GoogleFormのような簡単なフォームを作成することができ、入力した情報をデータベースに保存したり、情報を更新したりすることができる。

### データベース
一からデータベースを作成できるだけでなく、入力フォームの情報を蓄積したり、
他のアプリと連携して、データベースの情報を一つに集約したりすることもできる。
※100レコード毎の追加、更新でタスク実行回数1回分消費する


# 作成手順
①Yoomにログイン後、新規プロジェクトを作成します。ホーム画面から新規作成をクリックします。（アカウント作成とログインの手順は割愛してます）
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/3009d5b9-77ac-79aa-e2a4-6a5c1e081b83.png)

任意のプロジェクト名を入力して、保存するをクリックします。
![無題1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/afb985ad-9c17-0297-70a6-585ded97dfe4.png)

②作成したプロジェクトが開くので、フローボットをクリックし、新規作成をクリックします。
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/2fd6bd61-f2b9-f6ad-c8ca-eda0f0d3bd7f.png)

作成方法を「はじめから作成」または「テンプレートギャラリーから作成」を選択します。
今回は「はじめから作成」を選択しました。
![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/a8d8ca3f-a8eb-c0b6-975a-08b452b258bb.png)

③フローボット作成画面が表示されるので、フローボットのタイトルと、説明文を入力します。
月初に起動したいので、トリガーは「特定のスケジュールになった時」を選択します。
![無題6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/a4ace8d3-e6b5-4890-f75e-ef505e1beb79.png)


④トリガーの設定画面が開くので、タイトル「月初の9時になったら」を入力し、スケジュール設定は「日付指定」、日は「1」、時刻は「9」を入力し、保存ボタンをクリックします。
![無題5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/8a4ddba1-ce2e-0f42-ef49-30d9bccdbb40.png)

トリガーが設定されました。初期設定ではトリガーがOFFになっているので、クリックしてONにしておきます。
![無題7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/e594798d-2a79-db06-2bbf-a7e5595a32e7.png)
↓
![無題8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/b126ecdf-ab20-c43c-e2f2-35ce3666cefa.png)

⑤次に、複製したファイル名に`勤務表(202309)`のようにフロー実行日の年(yyyy)と月(MM)を設定したいので、取得する処理を追加します。＋アイコンをクリックします。
![無題22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/fd41231e-d61f-dc9e-3ac3-04a1b1b740cd.png)

オペレーションタイプの選択で「データを操作・変換する」をクリックします。
![無題19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/db827337-f581-7df6-5f43-fb5d2129751d.png)

変換タイプの選択で、「正規表現によるデータの抽出」をクリックします。
![無題20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/31d59641-3479-b105-d822-ab5ef820fd66.png)

タイトルに「yyyyを取得する」と入力して「次へ」をクリックします。
※yyyyMM(年と月を繋げて)で取得することもできますが、今回はyyyyとMMを別々に取得します。
![無題21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/411fa4eb-d8b7-e101-841b-9c17b7cd858c.png)

抽出対象の文字列の欄をクリックすると、プルダウンが表示されるので、「今日」→「%Y%m%d」を選択します。
![無題23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/4bf3b138-bca0-8543-597c-97d721340370.png)
選択後は`{{today_%Y%m%d}}`と自動で表示されます。
これでロボを実行した日の年月日がyyyyMMddの形式で取得されます。
ここから正規表現を使用して先頭のyyyyを抽出します。
![無題24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/3154cb13-d2b7-9320-2843-a2491f9caa12.png)

抽出箇所を検索欄に正規表現の`\d{4}`を入力します。
下のテストボタンをクリックすると、`2023`が抽出されているので成功です。
※正規表現についての説明は割愛します。[Yoom正規表現のヘルプ](https://intercom.help/yoom/ja/articles/5765750-%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%AE%E8%A8%98%E8%BC%89%E6%96%B9%E6%B3%95)
![無題25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/b6752603-7956-901c-1d10-df1cbfa8c5e4.png)
最後にアウトプット名に`yyyy`と入力して保存ボタンをクリックします。
アウトプット名は、他のアクションから年(yyyy)を呼び出す際に指定する変数名のようなイメージです。
![無題26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/7479939b-51aa-c1fe-9699-50afc31b425e.png)

⑥⑤と同様にフロー実行日の月(MM)を取得する処理を追加します。
流れは⑤と同様なので割愛しますが、正規表現を入力する欄で`(?<=[0-9]{4})(.*)(?=(0[1-9]|[12][0-9]|3[01]))`と入力します。
![無題27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/935f7a6f-253c-fa0f-18f4-bffedc7ce152.png)

⑦次に、GoogleドライブとYoomを連携して、勤務表フォーマットのスプレッドシートをコピーするアクションを設定します。＋アイコンをクリックします。
![無題28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/e44e4fbd-e794-79a1-70ed-6c42c0eb050a.png)
オペレーションタイプの選択で「アプリと連携する」をクリックします。
![無題9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/205620af-6e18-24fc-214c-e94b5cfa2a1a.png)
どのアプリと連携するか聞かれるので「GoogleDrive」を選択します。
![無題10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/212f26b8-491b-57ea-6b32-1eee7f5867a7.png)
タイトルを入力し、Googleドライブと連携するため「連携アカウントを追加する」をクリックします。
![無題11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/2cbbf71a-4f65-5950-ded7-b95f6a10c41a.png)
アカウント選択画面が表示されるので、連携したいアカウントを選択します。
![無題12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/dc23415c-df0e-fc4f-e213-ba3dd09b6248.png)
内容を確認し、「続行」をクリックします。
![無題13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/e0c62ab8-42f0-f7c5-d564-1295188fb0d7.png)

アカウントが連携されました。
アクションは「ファイルを複製する」を選択し、次へをクリックします。
![無題14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/4dabfe35-0d1a-efad-da3f-dac3e8449a52.png)

次の画面では、どのスプレッドシートを複製するか設定します。
「ファイルID」に複製したいスプレッドシートのIDを入力します。
`※スプレッドシートURLの●●●●●部分`
`https://docs.google.com/spreadsheets/d/●●●●●/edit#gid=0`
「フォルダID」は複製したファイルを格納するフォルダIDを入力します。
`※フォルダURLの●●●●●部分`
`https://drive.google.com/drive/u/0/folders/●●●●●`
![無題30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/10968cf2-c21b-8b88-bf8e-4f9aea72f7de.png)

「ファイル名」には`勤務表(202309)`のように実行日の年と月を設定したいので、まず`勤務表()`と入力し、`()`の間にカーソルがある状態にします。
その状態で、ファイル名欄をクリックするとプルダウンが表示されるので、⑤で設定したタイトル名`yyyyを取得する`→アウトプット名`yyyy`を選択します。すると`勤務表({{yyyy}})`と表示されます。
![無題29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/0dca7e73-a5c6-a18a-e689-0df6879b73e8.png)
同様に`MMを取得する`→アウトプット名`MM`を選択します。
最終的にファイル名が`勤務表({{yyyy}}{{MM}})`と表示されていれば成功です。
すべて入力したら、一番下の「保存する」をクリックします。
![無題31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/2b2a8258-0d9c-3040-b9ac-733169f894be.png)

⑧次に複製した勤務表スプレッドシートのD2セルに年(yyyy)、F2セルに月(MM)を入力する処理を追加します。
以下画像のようなイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/f0a0777f-4fb4-853c-88ed-36ec63ec0ee9.png)
＋アイコンをクリックし、「アプリと連携する」から「Googleスプレッドシート」を選択します。
![無題32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/4f65ad94-0e3f-65fa-e0c0-a6dc2ecec19c.png)
タイトルを入力し、アクションは「セルに値を入力」を選択し、次へをクリックします。
![無題33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/a2af8032-a667-4d04-4c1f-061f5ad5ab77.png)

「スプレッドシートID」の設定では、プルダウンの`アウトプットを入力`→`勤務表フォーマットをコピーして新しい勤務表を作成する`（⑦のタイトル名）→`複製したファイルID`をクリックします。
![無題35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/14f3991e-d7cd-f54d-a55c-893e26ee8afb.png)
「シート名」は複製したファイルのシート名を入力し、「対象のセル」はyyyyを入力したいセルを設定します。
「値」では年(yyyy)を入力したいので、⑤で設定したタイトル名`yyyyを取得する`→アウトプット名`yyyy`を選択します。
全て設定し終えたら一番下の保存するボタンをクリックします。
![無題36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/b6b82447-a1c0-9fcd-b538-d12c0c1061d5.png)

⑨次は、勤務表スプレッドシートのF2セルに、月(MM)を入力する処理を追加します。
⑧と同様なので説明は割愛します。

⑩最後に、勤務表を作成し終えたら、通知メッセージを送信する処理を追加します。
＋アイコンをクリックし、「アプリと連携する」から「Chatwork」を選択します。
![無題37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/ccfbf7a5-61d1-8888-bea7-35a07476650b.png)

⑦のGoogleドライブのアカウント追加の処理と同様に、Chatworkのアカウント追加を行います。「連携アカウントを追加する」をクリックします。
![無題38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/edd3d508-2f50-f9a2-a5b2-e76c398dedba.png)
連携画面が表示されるので任意の方法で接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/9347ea28-a9c1-ab8a-62f9-b3c7486767e9.png)
内容を確認し「許可」をクリックします。
![無題39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/f3e37119-1388-1158-11f6-f9a509cad72d.png)
アカウントの追加が完了したら、アクションで「メッセージを送る」を設定し「次へ」をクリックします。
![無題40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/984be091-9058-94d9-2255-bab7303e445f.png)

Chatworkのどのルームにメッセージを送信するか、ルームIDを設定します。
`※送信したいルームIDのURLの●●●●●部分`
`https://www.chatwork.com/#!rid●●●●●●`
または、ルームID欄をクリックすると、ルーム名が表記されたプルダウンが表示されるので、それを選択することでもルームIDを設定できます。

メッセージ内容は任意のメッセージを設定します。
画像下の「テスト」をクリックすると、指定したルームIDにテストメッセージを送信することができます。
![無題41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/dc1e1d40-a8b2-4c7d-b2f8-93e1593e8ce8.png)
正しくメッセージが送信されたことを確認したら、保存ボタンをクリックします。

⑪以上でフローが完成したので、動作確認をします。
編集画面を上までスクロールし、「＜フローボット詳細に戻る」をクリックします。
![無題42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/a52196bd-273b-4714-6ba3-740fee3242af.png)

「フローボットを起動する」をクリックします。
![無題43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/f4ddb472-7918-80c9-fc81-ad22bb16f89e.png)

アクションが上から順番に実行されていきます。
トリガーを月初の9時に設定しましたが、最初の起動はトリガーが無視されるようで、実行日が月初でなくても起動し、最後の通知のアクションまで進みました。
![無題44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/51ebf72b-53f0-f7a2-ad37-69e4f67b7269.png)
Chatworkに完了通知が届きました。
※送信者名はYoomと連携したアカウント名が表示されます。
![無題45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/82e28695-309b-05fd-33b8-f238b1849659.png)
Googleドライブを確認すると新しい勤務表が作成されていました！
![無題46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/07376873-e127-3220-ff1c-e215bb2b266e.png)

ファイル名と、D2、F2セルにも日付が正確に設定されていました。
![無題47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128319/2b6041f2-66c3-b0de-6454-edb76848cbcc.png)

## タスク実行回数について
:::note info
今回は計7個のアクションでフローボットを作成したので、
1回の起動で、タスク実行回数は7回消費されます。
無料版の範囲で作成したい場合、月100回を超えないようにアクションの数を計算してフローボットを作成する工夫が必要そうです。
:::


# 感想
タスク実行回数の制限はあるものの、無料版で、作成したフローの自動実行（トリガー設定）ができることに感動しました。
また、日付の取得方法がわからなかったので、Yoom画面右下のフォームから質問したところ、すぐに回答があったので、サポートも手厚いのかなと思います。
今回はフローボットしか使用できなかったので、他の入力フォームやデータベースを組み込んだツール作成にもチャレンジできたらいいなと思っています！