環境
windows10
ruby2.5.3
使用しているrequire
require 'mail'
require "google_drive"
お世話になります。現在私はスプレッドシートから情報の抜出、メール等で送信するプログラムを組んでいます。
(1..sheet.num_rows).each do |row|及びifを使い縦に目的の情報を照会、該当するものがあれば取得してメール送信。
実行したい動き
同一社名の場合まとめて情報を送信したい。
縦に作業をしているのでメールを個別に送る際は問題ありませんが、会同一社名の場合も個別に送信をしてしまうのでまとめたい。
課題
縦に処理を行っているので、まとめるのが難しい。
next等で送信する処理を飛ばしても、新たな値が代入されるのでまとめることができない。
試したこと
1.sheet[row+1, 4]のように現在作業している行の一段下をチェック後同じ会社名の場合処理を追加。
この場合今後同一の会社の情報が増加したら対応できないので却下。
2.メール送信手前で代入しておいた前回の会社名と現在処理している会社名が違う場合送信。
送信はせずとも、内容が上書きされてしまうので結局最後に取得した情報しか送信されない。
現在作業中のコードを添付致します。
Ruby
1sheet = @session.spreadsheet_by_key(@key).worksheet_by_title("hoge") 2 (1..sheet.num_rows).each do |row| 3 @a = sheet[row, 4] 4 @aa = sheet[row + 1 , 4] 5 @b = sheet[row, 5] 6 @c = sheet[row, 6] 7 @g = sheet[row, 8] 8 @d = sheet[row, 19] 9 @e = sheet[row, 20] 10 @f = sheet[row, 27] 11 @h = sheet[row, 29] 12 13 if @d == "#{@day.month}月" 14 if @f == "hoge" 15 hoge 16 if @a == @aa 17 next 18 else 19 send_gmail 20 end 21 elsif @f == "hogehoge" 22 hogehoge 23 if @a == @aa 24 next 25 else 26 send_gmail 27 end 28 else 29 hogehogehoge 30 if @a == @aa 31 next 32 else 33 send_gmail 34 end 35 end 36 end 37 end 38end
本文、コード共にわかりづらくて申し訳ありません、ご助力頂けると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/23 03:11