初投稿です。
元々比較的デジタルな職場にいたのですが、2021年9月にてんやわんやで学校という割と(かなり)アナログな職場に移りました。(教員です。)
そうしたら当然と言うべきかIT系の色々を面倒見る立場になったので、その過程(と趣味)でやってみたことを文章化しておこうと思い立ち見る専だったQiitaを書き始めました。続くことを祈りながらやっていきたいと思います。
背景
皆さんの中でExcel製の年度予定表を見たことがある方は多いのではないでしょうか。
これ自体は年間の予定がひと目で見やすくなかなか便利です。ただ、紙ベースでは持ち運びが効きませんし、データで持っておくにしても毎回Excelを開くのは少し面倒です。なんとかGoogleカレンダーのような連携可能なカレンダーアプリに登録しておきたい。
ただ、この予定を一々Googleカレンダーに入力するのは絶対に嫌です。
そこで、どうにかしてこれをGoogleカレンダーに一括で登録する方法を考えたというのが記事の趣旨となります。
##Googleカレンダーが取り込める形式
まずは、どのような形式にすればGoogleカレンダーに一括登録できるかを知る必要があります。Googleのサポートを見るとどうやら.csvか.icsであればインポートできるようです。ただし、それぞれの列にGoogleカレンダーが読み込める名前をつけておく必要があります。
となると方針は
- なんとかしてExcelファイルを加工してデータを取り込めるかたち(CSV)にする
- 加工したCSVをGoogleカレンダーでインポートする
- 完成!
となるでしょうか。
以下コードになります。
ちなみに
- R4.1.2
- Windows11 x64
環境下で実行されています。
大幅なバージョンアップが発表されているR4.2環境下ではまだ試していません。
##実際に書いたコード
#ライブラリを入れてない人
install.packages("tidyverse")
install.packages("lubridate")
google_schedule_csv <- function(){
library(tidyverse)
library(lubridate)
i = 0
t = 0
a <- data.frame(NULL)
b <- data.frame(NULL)
#ファイルの整形
for (i in 1:12) {
#ここの数字は予定表の1ヶ月あたりの列数によって書き換えてください
t <- (1+(i-1)*7)
a <- as_tibble(yotei[t:(t+6)])
colnames(a) <- str_replace(colnames(a),pattern = "\\...*","")
b <- rbind(b,a)
}
b %>%
filter(.,!is.na(月)) %>%
mutate(.,
年=if_else(
月>3,
as.double(year(today())),
as.double(year(today())+1)
)
) %>%
filter(.,
!is.na(行事)
) %>%
#Googleの書式に合わせて列の名称を変更→必要な行だけ抽出
mutate(.,
date=
str_c(年,月,日,sep="/"),
`All Day Event` = TRUE,
Private = TRUE,
`Reminder On/Off` = FALSE
) %>%
select(
`Start Date` = date,
Subject = 行事,
`All Day Event`,
Private,
`Reminder On/Off`
) -> b
view(b)
write_csv(b,"年間行事予定_Googleカレンダー.csv")
}
google_schedule_csv()
使用しているライブラリは
- tidyverseのdplyr&stringr&readr
- lubridate
だけなのでそれほど難しくはないはず…です。気力が持てば(自分向けの備忘録も兼ねて)簡単な解説等つけようかと思います。
##CSV取り込み
上にも貼りましたが、Google カレンダーに予定を読み込むが参考になるかと思います。一度読み込んでしまうと取り返しがつかないので、取り込む用の個人カレンダーを作成してから取り込むことを強くおすすめします。
##おわりに
とりあえず何でもかんでも取り込んでしまえばあとは毎日Googleから通知が来るというのは忘れっぽい自分にとってかなり楽です。少なくともExcelの配布カレンダーを開くことは滅多になくなりました。今後もこの調子で、少しでも自分が楽になるよう蟷螂の斧を振りかざしていく所存です。