ジャーナルクラブ,レクチャー割り当て解説 その2


もう一度,工程の確認
1.木金土のカレンダーを作る
2.祝日を取得する
3.メンバーのリストを作る
4.各メンバーのジャーナルクラブ,レクチャー最終日を取得する
5.各メンバーの公休日を把握する
6.各メンバーの有休を取得する
7.辞める日を把握する(さよならレクチャーのため)
8.辞める人はさよならレクチャーを辞める日の数週間前に割り当てて,以後は当たらないようにする
9.今から2ヶ月後の木金土を割り当てる
10.ジャーナルクラブもレクチャーも割当日に休みではなく,やったことない人>やったのが一番古い人の順で割り当てる
11.割り当てる人がいなかったらエラーをteamsに送るようにして気づくようにしておく

これで,4から始める.

各メンバーのジャーナルクラブ,レクチャー最終日取得

公休日シートにメンバーの短縮名,公休日,フルネーム,勤務開始終了日,後期研修医以上判定が入っているので,後期研修医以上のメンバーだけ(つまりレクチャ割り当てる人)を割り当て表に名前と,勤務開始終了日を移す.ただのコピーみたいなものなのでGPT4で簡単にできる.以下のコードにそれが入っている.

function updateNames() {

過去のジャーナルクラブ,レクチャー最終日の取得は,グーグルカレンダーから取得する.これもGPT4に聞けばわりと簡単.
ジャーナルクラブは,抄読会 ◯◯,レクチャーは朝担当 ◯◯で入っていることが多いため,カレンダーから取得している.

function importJCandLectureToSheet() {

このコードに入っている.
カレンダーIDを取得して,"抄読会","さよなら","朝担当","予演"が入っているものだけ,レクチャー実績というシートに日付と名前を書き込む.拾うのは,将来の予定とかも拾っておいて悪いことはないので,過去1年と未来半年くらい.だいたいで良い.

本日より前の日で,割り当て表の名前と朝担当の両方が入っていればレクチャーをしたことになる.その最新日を割り当て表の最終レクチャー列に,ジャーナルクラブも同様に抄読会と名前で検索して最終抄読会列に日付を記載させる.これで各メンバーの最終レクチャー,最終抄読会日の取得完了.

各メンバーの有休取得

これも,カレンダーから取ってくる.

function importEventsToSheet() {

このコードで以下で検索している.

return title.includes("リフ") || title.includes("超音波") ||title.includes("PTLS") || title.includes("ICLS") || title.includes("休") || title.includes("講習")&& !title.includes("上田") || title.includes("発表") && !title.includes("上田")  || title.includes("結婚") || title.includes("セミナー")&& !title.includes("上田") || title.includes("有給") || title.includes("会") && !title.includes("抄読") && !title.includes("医局") && !title.includes("運営") && !title.includes("上田") || title.includes("出張")&& !title.includes("上田")|| title.includes("WS")|| title.includes("@")&& !title.includes("上田")|| title.includes("@")&& !title.includes("上田")|| title.includes("講演")&& !title.includes("上田");

休みっぽいものと,イベントっぽいもの.一方で上田先生は除くような感じでやっている.漏れもあるかもしれないが,おおよそ網羅できていると思っている.これを,リフ休シートにイベントタイトル名と開始日から終了日を転送.

さらに,名前が複数ある場合は,人数の分だけイベントを書き込むようにして,D列に割り当て表に存在する名前で検索してD列に記載するようにしている.これで,各メンバーがそれぞれにイベントや休みがあることが把握できる.

辞める人の把握

これは,辞める人(最終日シート)と,院外研修(院外研修者最終日シート)して戻って来る人で分けてシートを準備.

function updateNamesforlastdays() {
function updateNamesfortemporarylastdays() {
function transferstaffdoctorlastDates() {
function transferstafftemporarydoctorlastDates() {

これらのコードに,院外研修に名前がない場合,現在のメンバー(公休日シートにある名前)からその名前を記入する.一方で,現在のメンバーに名前がない場合は,その名前を消す.

で,入力を忘れないようにしてもらうため,リマインドを定期的に送るwebhookを作成.

送りたいチャネルの・・・をクリック
チャネルを管理
コネクタの編集
incomingで検索してWebhookを構成

構成済みの場合は,

構成済みを選択
出てきた,右側の構成済みを選択
このURLがコードに必要

webhookとは,teamsに投稿させるためのアプリみたいなもので,ここで取得したURLで投稿が可能となる.
GAS側でコードを用意し,teams側でwebhookアプリを構成.

function sendWebhookMessageforouthospitallearner() {

ここにwebhookのコードが入っている.見ればなんとなくわかる.

これで残りは8以降のみ.

8.辞める人はさよならレクチャーを辞める日の数週間前に割り当てて,以後は当たらないようにする
9.今から2ヶ月後の木金土を割り当てる
10.ジャーナルクラブもレクチャーも割当日に休みではなく,やったことない人>やったのが一番古い人の順で割り当てる
11.割り当てる人がいなかったらエラーをteamsに送るようにして気づくようにしておく

この記事が気に入ったらサポートをしてみませんか?