0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby による2021年の週カレンダー(システム手帳用リフィル)の作成

Posted at

####目的:
週カレンダーの作成です。
####背景:
システム手帳のリフィルのサイズ(82mmW x 140mmL)が特殊で、使い始めたものの、入手困難であったため、いっそ手作りしてしまおうと考えたのは過去のことです。その際、リフィル用紙を特注で作ったことがありまして、その時の白紙が余っているので、来年は、久しぶりに手作りしようと考えたこと。
年に一度のことですので、手作りでも良いのですが、せっかくのプログラミング環境があるので、毎年、自動でカレンダーが出力できるような仕組みを作成してみようじゃあないか。という理由で、プログラミングしました。
####印刷:
ワープロソフトの「差し込み印刷」の機能を用います。従って、差し込み印刷用のカレンダーデータを作れば良い。「差し込み印刷」するテンプレートは、下図のような、見開きで1週間表示となるテンプレートとしました。能率手帳のように片側に1週間を詰め込むというテンプレートでも同様です。
L_andR_.png
データ:1週間が1レコードになりますので、下図のようなカレンダーデータベースができれば、差し込み印刷に使用できます。この表を、ruby で作ってみました。
weekly.png

ruby のコードは、下記になります。

.weekly_calendar.rb

# weekly

require 'date'
day = Date.new(2020,12,28)  # 月曜日始まりの12月最終月日
last = Date.new(day.year+1, day.month, day.mday)
weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'}
 while day < last do
  records=Array.new
  records.push(day.strftime("%Y%W,%Y,%W"))
  dday = day
    while dday < day+7 do 
     wday = weekdays[dday.wday]
     records.push(dday.strftime("%b,%-m,%d,%w,#{wday},%a,"))
     dday = dday+1
    end
  print records.join(',')
  print  "\n"
  day = day+7
 end

ヘッダーのファイルは下記コードで出力し、上の出力の上に貼り付けました。csvを 出力して、libreoffice calc に読み込ませれば、「差し込み印刷」のデータとなります。

.header.rb
# weekly header

printf "%s,%s,%s,","yrwk","yr","wkwk"
printf "%s,%s,%s,%s,%s,%s,%s,","mte1","mtn1","dyn1","wkn1","wkj1","wke1","s1"
printf "%s,%s,%s,%s,%s,%s,%s,","mte2","mtn2","dyn2","wkn2","wkj2","wke2","s2"
printf "%s,%s,%s,%s,%s,%s,%s,","mte3","mtn3","dyn3","wkn3","wkj3","wke3","s3"
printf "%s,%s,%s,%s,%s,%s,%s,","mte4","mtn4","dyn4","wkn4","wkj4","wke4","s4"
printf "%s,%s,%s,%s,%s,%s,%s,","mte5","mtn5","dyn5","wkn5","wkj5","wke5","s5"
printf "%s,%s,%s,%s,%s,%s,%s,","mte6","mtn6","dyn6","wkn6","wkj6","wke6","s6"
printf "%s,%s,%s,%s,%s,%s,%s\n","mte7","mtn7","dyn7","wkn7","wkj7","wke7","s7"

祝日情報は、手入力で修正になります。データを揃えたら自動的に差し込めるように改良したいですが、年に一回の作業ですので予定は未定です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?