読者です 読者をやめる 読者になる 読者になる

みかづきの色々

デバイス(スマホからキャンプ用品まで)とかプログラミングとか中心のいろいろ試験的なブログ。

週報作成のお手伝い。

お仕事で毎週、週報を書いているが、これはテキストファイルで書いて添付で送る習慣になっている。

このファイル名が定形で決まってて、第何週ってわかるようになってるのね。

でもこれ、毎週毎週、「えーと今週は7月第3週だから……」ってマニュアルでやってるのが美しくない。ファイル名くらい勝手に決めて、前回の結果からコピーしたいよね?

そんなわけで、即興でこれをでっちあげた。

#!/usr/bin/ruby -Ku

require 'fileutils'

def addzero(d)
  r = d.to_s
  if d < 10
    r = "0#{r}"
  end
  r
end

def get_oldmonth(year,month,n)
  r = nil
  while r == nil
    n = n - 1
    if n < 1
      n = 6
      month -= 1
      if month < 1
        month = 12
        year -= 1
        break if year < 2009
      end
    end
    fn = "週報#{year}#{addzero(month)}月第#{n}週.txt";
    if File.exist?(fn) == true
      r = fn.clone
      break
    end
  end
  r
end

# Time.now.strftime("%m/%d %a")
now = Time.now
year = now.strftime("%Y").to_i
month = now.strftime("%m").to_i
day = now.strftime("%d").to_i
yobi = now.strftime("%a").clone
snow = Time.local(year,month,1,0,0,0,0)
n = 0
(1..day).each{|i|
  if Time.local(year,month,i,0,0,0,0).strftime("%a") == yobi
    n += 1
  end
}
print "今週は、#{month}月第#{n}週です。\n"
newfn = "週報#{year}#{addzero(month)}月第#{n}週.txt";
oldfn = get_oldmonth(year,month,n)
if oldfn != nil && File.exist?(newfn) == false
  p newfn,oldfn
  FileUtils.copy(oldfn,newfn)
end

これのキモは

・「今週が第何週かを調べる」
・「前回の報告書を探してきて最新の名前でコピーする」

なのだ。

中身を書くのはもちろん、手動で XD お仕事だからね。