class Tracco::Exporters::GoogleDocs

Public Class Methods

new(spreadsheet_name, worksheet_name) click to toggle source
# File lib/tracco/exporters/google_docs.rb, line 11
def initialize(spreadsheet_name, worksheet_name)
  @spreadsheet_name = spreadsheet_name || "trello effort tracking"
  @worksheet_name   = worksheet_name || "tracking"
end

Public Instance Methods

export() click to toggle source
# File lib/tracco/exporters/google_docs.rb, line 16
def export
  Trello.logger.info "Running exporter from db env '#{Tracco.environment}' to google docs '#{@spreadsheet_name.color(:green)}##{@worksheet_name.color(:green)}'..."

  spreadsheet = google_docs_session.spreadsheet_by_title(@spreadsheet_name) || google_docs_session.create_spreadsheet(@spreadsheet_name)
  worksheet = spreadsheet.worksheet_by_title(@worksheet_name) || spreadsheet.add_worksheet(@worksheet_name)

  create_header(worksheet)
  index = 2 # skip the header

  cards = TrackedCard.all_tracked_cards(:method => :first_activity_date, :order => :desc)
  cards.each do |card|
    print ".".color(:green)
    worksheet[index, columns[:user_story_id]] = card.short_id
    worksheet[index, columns[:user_story_name]] = card.name
    worksheet[index, columns[:start_date]] = card.working_start_date
    worksheet[index, columns[:total_effort]] = card.total_effort
    worksheet[index, columns[:last_estimate_error]] = card.last_estimate_error
    card.estimates.each_with_index do |estimate, i|
      worksheet[index, columns[:estimate]+i] = estimate.amount
    end
    index += 1
  end

  saved = worksheet.save
  spreadsheet.human_url if saved
end

Private Instance Methods

columns() click to toggle source
# File lib/tracco/exporters/google_docs.rb, line 56
def columns
  @columns ||= {
    user_story_id:        1,
    user_story_name:      2,
    start_date:           3,
    total_effort:         4,
    last_estimate_error:  5,
    estimate:             6,
  }
end
create_header(worksheet) click to toggle source
# File lib/tracco/exporters/google_docs.rb, line 67
def create_header(worksheet)
  worksheet.update_cells(1,1, [["ID", "Story Name", "Start Date", "Total Effort (hours)", "Last estimate error (%)", "First Estimate", "2nd estimate", "3rd estimate"]])
end
google_docs_session(email=configuration["google_docs_username"]) click to toggle source
# File lib/tracco/exporters/google_docs.rb, line 45
def google_docs_session(email=configuration["google_docs_username"])
  @session ||= login(email)
end
login(email) click to toggle source
# File lib/tracco/exporters/google_docs.rb, line 49
def login(email)
  username = ask("Enter your google docs username: ") { |q| q.default = email }
  password = ask("Enter your google docs password: ") { |q| q.echo = false }

  GoogleDrive.login(username, password)
end