Skip to content

Instantly share code, notes, and snippets.

@anya-tokugawa
Created October 2, 2021 08:10
Show Gist options
  • Select an option

  • Save anya-tokugawa/04126318cd5b5c5c7de429337c0f35fc to your computer and use it in GitHub Desktop.

Select an option

Save anya-tokugawa/04126318cd5b5c5c7de429337c0f35fc to your computer and use it in GitHub Desktop.
アルバイト用のiCalendarジェネレーターbashスクリプト
#!/bin/bash -eu
if [[ $# -ne 3 ]];then
echo "書式: $0 [出力ICSファイル名] [西暦] [月]"
exit
fi
FILE="$1"
YEAR="$2"
MONTH="$3"
FIXMONTH="$(printf '02d' "$MONTH")"
#################################################
# 設定
## カレンダー名
CALENDAR_NAME="仕事予定表 ${MONTH}月"
## 予定開始時刻/終了時刻
STARTTIME="070000" # 例: 7:00:00
ENDTIME="090000" # 例: 9:00:00
LOCARION="地球ステーション, ナスカ"
## 予定タイトルを取得する箇所
_getSummary()
{
TYPESTR="null"
TYPE="$1"
# タイトルの接頭辞
PREFIX="仕事(担当箇所:"
# タイトルの接尾辞
SUFFIX=")"
case "$TYPE" in
## ここで入力文字列に対しての表をつくる。
"1") TYPESTR="1番ゲート: STRELKA to Stellvia, ST-102 ";;
"2") TYPESTR="2番ゲート: FUJIYAMA to Stellvia, FJ-102";;
"3") TYPESTR="3番ゲート: FUJIYAMA to Stellvia , FJ-101";;
"4") TYPESTR="4番ゲート: GAGARIN to Stellvia, GG-201";;
##### ここは消さないこと #####
"*") TYPESTR="_INVALID_";;
esac
if [[ "$TYPESTR" != "_INVALID_" ]];
echo "${PREFIX}${TYPESTR}${SUFFIX}"
return 0
fi
echo "_INVALID_"
return 1
}
#################################################
if [[ -f "$FILE" ]];then
echo "* ICSファイルは存在します"
exit 1
fi
cat << HEAD > "$FILE"
BEGIN:VCALENDAR
VERSION:2.0
X-WR-CALNAME: ${CALENDAR_NAME}
BEGIN:VTIMEZONE
TZID:Tokyo Standard Time
BEGIN:STANDARD
DTSTART:16010101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
END:DAYLIGHT
END:VTIMEZONE
HEAD
echo "終了するときは '.' を押すこと"
while :
do
read DAY -p "DAY [1-31]: "
if [[ "$DAY" == "." ]];then
break
fi
read TYPE -p "TYPE [1|2|3|4]: "
if [[ "$TYPE" == "." ]];then
break
fi
SUMMARY="$(_getSumamry "$TYPE")"
if [[ "$SUMMARY" == "_INVALID_" ]];
echo "* 入力したタイプは存在しません"
continue
fi
FIXDAY=$(printf '%02d' "$DAY")
# イベント部分
cat << __EVENT_END__ >> "$FILE"
BEGIN:VEVENT
SUMMARY: $SUMMARY
LOCATION: ${LOCATION}
DTSTART;TZID=Tokyo Standard Time:${YEAR}${MONTH}${FIXDAY}T${STARTTIME}+0900
DTEND;TZID=Tokyo Standard Time:${YEAR}${MONTH}${FIXDAY}T${ENDTIME}+0900
CLASS:PUBLIC
PRIORITY:5
TRANSP:OPAQUE
CREATED: $(date -I"seconds" | tr -d ':-')
STATUS:CONFIRMED
SEQUENCE:2
END:VEVENT
__EVENT_END__
cat << _OTHER_OPT_MEMO_ > /dev/null
DESCRIPTION: foo
RRULE:FREQ=WEEKLY;BYDAY=FR;INTERVAL=1;UNTIL=20141030T120000
_OTHER_OPT_MEMO_
done
echo "END:VCALENDAR" >> "$FILE"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment