Class: AdwordsApi::ReportQueryBuilder

Inherits:
QueryBuilder show all
Defined in:
lib/adwords_api/query_utils/report_query_builder.rb

Instance Method Summary collapse

Methods inherited from QueryBuilder

#build_where, #where

Constructor Details

#initialize(api) {|_self| ... } ⇒ ReportQueryBuilder

Returns a new instance of ReportQueryBuilder.

Yields:

  • (_self)

Yield Parameters:



25
26
27
28
29
30
31
32
33
# File 'lib/adwords_api/query_utils/report_query_builder.rb', line 25

def initialize(api)
  super(api)
  @select = nil
  @from = nil
  @during_range = nil
  @during_start = nil
  @during_end = nil
  yield self if block_given?
end

Instance Method Details

#buildObject

Raises:

  • (ArgumentError)


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/adwords_api/query_utils/report_query_builder.rb', line 56

def build()
  raise ArgumentError,
      'Must specify SELECT clause for valid AWQL' if @select.nil?
  raise ArgumentError,
      'Must specify FROM clause for valid AWQL' if @from.nil?
  if !@during_range.nil? && (!@during_start.nil? || !@during_end.nil?)
    raise ArgumentError,
        'Cannot specify both date range and start/end dates.'
  end
  result = sprintf('SELECT %s', @select.join(', '))
  result += sprintf(' FROM %s', @from)
  result += build_where()
  if !@during_range.nil?
    result += sprintf(' DURING %s', @during_range)
  elsif !@during_start.nil? || !@during_end.nil?
    if @during_start.nil?
      raise ArgumentError, 'Cannot specify end date without start date.'
    elsif @during_end.nil?
      raise ArgumentError, 'Cannot specify start date without end date.'
    end
    result += sprintf(' DURING %s,%s', @during_start, @during_end)
  end
  @api.utils_reporter.report_query_builder_used()
  return ReportQuery.new(result)
end

#configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



35
36
37
# File 'lib/adwords_api/query_utils/report_query_builder.rb', line 35

def configure()
  yield self
end

#during(start_date, end_date) ⇒ Object



51
52
53
54
# File 'lib/adwords_api/query_utils/report_query_builder.rb', line 51

def during(start_date, end_date)
  @during_start = start_date
  @during_end = end_date
end

#during_date_range(date_range) ⇒ Object



47
48
49
# File 'lib/adwords_api/query_utils/report_query_builder.rb', line 47

def during_date_range(date_range)
  @during_range = date_range
end

#from(report_name) ⇒ Object



43
44
45
# File 'lib/adwords_api/query_utils/report_query_builder.rb', line 43

def from(report_name)
  @from = report_name
end

#select(*fields) ⇒ Object



39
40
41
# File 'lib/adwords_api/query_utils/report_query_builder.rb', line 39

def select(*fields)
  @select = fields
end