16
18

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 5 years have passed since last update.

めんどくさいExcel週報をRubyスクリプトでサクッとメール送信する

Last updated at Posted at 2014-01-14

#動機
いまだにExcelで作成した週報を毎週メールで提出していて、めんどくさい。

#やること

  1. Excelで作成した週報のファイル名末尾に日付を付加する
  2. サブジェクトにも日付を付けExcelファイルを添付する
  3. 定型文を書いて特定の宛先にメール送信する

これを、
ruby send_weekly_report.rb yyyymmdd
こんな感じで実行したい。

#メール送信の方法
Mailというgemがあり、こことかここの説明がわかりやすかった。
UTF-8でなくISO-2022-JPで送信したい場合は、mail-iso-2022-jpというgemを使う。

#コード

send_weekly_report.rb
# encoding: utf-8

require 'mail-iso-2022-jp'
require 'fileutils'

if ARGV.length != 1 then
  abort "引数の数が正しくありません。\nruby send_weekly_report.rb yyyymmdd"
end

yyyymmdd = ARGV[0]

title = '週報'

# 週報ファイル名に日付を付加してコピーする
attachment_file = "#{title}_#{yyyymmdd}.xlsx"
FileUtils.cp("#{title}.xlsx", attachment_file)

@mail = Mail.new(:charset => 'ISO-2022-JP') do
  to 'manager@example.com'
  cc 'ceo@example.com'
  from 'your_name@example.com'
  add_file attachment_file
  subject "#{title}#{yyyymmdd}"
  body <<-EOS
○○様

お疲れ様です。××です。

週報を添付ファイルにて送付いたします。
ご確認のほどよろしくお願いいたします。
  
  EOS
end

@mail.delivery_method :smtp, {
  address:   'smtp.gmail.com',
  port:      587,
  domain:    'example.com',
  authentication: :plain,
  enable_starttls_auto: true,
  user_name: 'your_name@example.com',
  password:  'p455w0rd'
}

@mail.deliver!

#補足

  • パスワードをハードコードしたくない場合は、ここを参考にして、標準入力から取得する。
  • 提出日が金曜日固定ならコマンドライン引数に渡さずコード上で取得してもいいけど、だいたい金曜当日は忘れてたりするので、月曜にも送信できるように、、、。
16
18
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
16
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?