sem4r 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +22 -0
- data/README.rdoc +74 -0
- data/Rakefile +126 -0
- data/VERSION.yml +5 -0
- data/bin/sem +34 -0
- data/config/sem4r.example.yml +51 -0
- data/examples_blog/2009-11-29-hello-world.rb +12 -0
- data/examples_blog/2009-12-12-create-campaign.rb +29 -0
- data/examples_blog/2010-02-06-constants-scope.rb +8 -0
- data/examples_blog/2010-02-07-ad-parameters.rb +47 -0
- data/examples_sem4r/01_get_account.rb +37 -0
- data/examples_sem4r/02_get_info.rb +32 -0
- data/examples_sem4r/03_list_ad.rb +47 -0
- data/examples_sem4r/04_list_keywords.rb +54 -0
- data/examples_sem4r/05_request_report.rb +51 -0
- data/examples_sem4r/05_request_report_2010.rb +40 -0
- data/examples_sem4r/06_create_campaigns.rb +86 -0
- data/examples_sem4r/07_create_campaigns_block.rb +99 -0
- data/examples_sem4r/07_create_campaigns_simple.rb +65 -0
- data/examples_sem4r/08_ad_params.rb +70 -0
- data/examples_sem4r/09_targeting_idea.rb +59 -0
- data/examples_sem4r/10_get_location.rb +28 -0
- data/examples_sem4r/11_submit_bulk_job.rb +82 -0
- data/examples_sem4r/12_list_bulk_job.rb +29 -0
- data/examples_sem4r/30_prune_empty_adgroup.rb +50 -0
- data/examples_sem4r/31_empty_accounts.rb +40 -0
- data/examples_sem4r/example_helper.rb +115 -0
- data/lib/sem4r/account.rb +349 -0
- data/lib/sem4r/ad_extension_override/ad_extension_override_service.rb +30 -0
- data/lib/sem4r/ad_group/ad_group.rb +340 -0
- data/lib/sem4r/ad_group/ad_group_bids.rb +170 -0
- data/lib/sem4r/ad_group/ad_group_service.rb +75 -0
- data/lib/sem4r/ad_group/mobile_ad_image.rb +33 -0
- data/lib/sem4r/ad_group_ad/ad_group_ad.rb +98 -0
- data/lib/sem4r/ad_group_ad/ad_group_ad_operations.rb +38 -0
- data/lib/sem4r/ad_group_ad/ad_group_ad_service.rb +56 -0
- data/lib/sem4r/ad_group_ad/ad_group_mobile_ad.rb +137 -0
- data/lib/sem4r/ad_group_ad/ad_group_text_ad.rb +98 -0
- data/lib/sem4r/ad_group_criterion/ad_group_criterion.rb +144 -0
- data/lib/sem4r/ad_group_criterion/ad_group_criterion_bids.rb +115 -0
- data/lib/sem4r/ad_group_criterion/ad_group_criterion_operations.rb +35 -0
- data/lib/sem4r/ad_group_criterion/ad_group_criterion_service.rb +58 -0
- data/lib/sem4r/ad_group_criterion/criterion.rb +67 -0
- data/lib/sem4r/ad_group_criterion/criterion_keyword.rb +80 -0
- data/lib/sem4r/ad_group_criterion/criterion_placement.rb +66 -0
- data/lib/sem4r/ad_param/ad_param.rb +96 -0
- data/lib/sem4r/ad_param/ad_param_operation.rb +34 -0
- data/lib/sem4r/ad_param/ad_param_service.rb +59 -0
- data/lib/sem4r/adwords.rb +242 -0
- data/lib/sem4r/api_counters.rb +7 -0
- data/lib/sem4r/base.rb +43 -0
- data/lib/sem4r/bulk_mutate_job/bulk_mutate_job.rb +108 -0
- data/lib/sem4r/bulk_mutate_job/bulk_mutate_job_selector.rb +56 -0
- data/lib/sem4r/bulk_mutate_job/bulk_mutate_job_service.rb +57 -0
- data/lib/sem4r/bulk_mutate_job/job_operations.rb +35 -0
- data/lib/sem4r/campaign/campaign.rb +193 -0
- data/lib/sem4r/campaign/campaign_service.rb +91 -0
- data/lib/sem4r/campaign_criterion/campaign_criterion_service.rb +30 -0
- data/lib/sem4r/campaign_target/campaign_target_service.rb +30 -0
- data/lib/sem4r/cli/cli_command.rb +101 -0
- data/lib/sem4r/cli/cli_commands.rb +60 -0
- data/lib/sem4r/cli/cli_common_args.rb +293 -0
- data/lib/sem4r/cli/cli_download_report.rb +81 -0
- data/lib/sem4r/cli/cli_helpers.rb +57 -0
- data/lib/sem4r/cli/cli_ideas.rb +100 -0
- data/lib/sem4r/cli/cli_list_ads.rb +74 -0
- data/lib/sem4r/cli/cli_list_keywords.rb +76 -0
- data/lib/sem4r/cli/cli_request_report.rb +104 -0
- data/lib/sem4r/cli/cli_sem.rb +64 -0
- data/lib/sem4r/common/operation.rb +78 -0
- data/lib/sem4r/credentials.rb +86 -0
- data/lib/sem4r/extensions.rb +62 -0
- data/lib/sem4r/geo_location/geo_location_service.rb +59 -0
- data/lib/sem4r/info/info_service.rb +115 -0
- data/lib/sem4r/report_definition/report_definition.rb +104 -0
- data/lib/sem4r/report_definition/report_definition_operation.rb +34 -0
- data/lib/sem4r/report_definition/report_definition_selector.rb +31 -0
- data/lib/sem4r/report_definition/report_definition_service.rb +55 -0
- data/lib/sem4r/sem4r_error.rb +28 -0
- data/lib/sem4r/services/service.rb +74 -0
- data/lib/sem4r/services/soap_call.rb +100 -0
- data/lib/sem4r/services/soap_connector.rb +284 -0
- data/lib/sem4r/services/soap_error.rb +38 -0
- data/lib/sem4r/services/soap_message_v13.rb +129 -0
- data/lib/sem4r/services/soap_message_v2009.rb +170 -0
- data/lib/sem4r/soap_attributes.rb +141 -0
- data/lib/sem4r/targeting_idea/targeting_idea.rb +158 -0
- data/lib/sem4r/targeting_idea/targeting_idea_selector.rb +200 -0
- data/lib/sem4r/targeting_idea/targeting_idea_service.rb +51 -0
- data/lib/sem4r/v13_account/account_service.rb +54 -0
- data/lib/sem4r/v13_account/billing_address.rb +67 -0
- data/lib/sem4r/v13_report/report.rb +185 -0
- data/lib/sem4r/v13_report/report_job.rb +51 -0
- data/lib/sem4r/v13_report/report_service.rb +89 -0
- data/lib/sem4r/v13_traffic_estimator/traffic_estimator_service.rb +30 -0
- data/lib/sem4r.rb +142 -0
- data/lib/sem4r_cli.rb +40 -0
- data/sem4r.gemspec +247 -0
- data/spec/aggregates_spec_helper.rb +59 -0
- data/spec/fixtures/sem4r.example.yml +26 -0
- data/spec/fixtures/services/ad_group/get-first-req.xml +28 -0
- data/spec/fixtures/services/ad_group/get-first-res.xml +91 -0
- data/spec/fixtures/services/ad_group/get-manual-cpm-bids-req.xml +106 -0
- data/spec/fixtures/services/ad_group/get-manual-cpm-bids-res.xml +75 -0
- data/spec/fixtures/services/ad_group/mutate_add-req.xml +52 -0
- data/spec/fixtures/services/ad_group/mutate_add-res.xml +33 -0
- data/spec/fixtures/services/ad_group_ad/get_mobile_ad-req.xml +28 -0
- data/spec/fixtures/services/ad_group_ad/get_mobile_ad-res.xml +194 -0
- data/spec/fixtures/services/ad_group_ad/get_text_ad-req.xml +29 -0
- data/spec/fixtures/services/ad_group_ad/get_text_ad-res.xml +55 -0
- data/spec/fixtures/services/ad_group_ad/mutate_add_mobile_ad-req.xml +50 -0
- data/spec/fixtures/services/ad_group_ad/mutate_add_mobile_ad-res.xml +42 -0
- data/spec/fixtures/services/ad_group_ad/mutate_add_text_ad-req.xml +37 -0
- data/spec/fixtures/services/ad_group_ad/mutate_add_text_ad-res.xml +32 -0
- data/spec/fixtures/services/ad_group_ad/mutate_add_two_criterions-req.xml +83 -0
- data/spec/fixtures/services/ad_group_ad/mutate_add_two_criterions-res.xml +95 -0
- data/spec/fixtures/services/ad_group_criterion/get-req.xml +28 -0
- data/spec/fixtures/services/ad_group_criterion/get-res.xml +242 -0
- data/spec/fixtures/services/ad_group_criterion/mutate_add_criterion_keyword-req.xml +48 -0
- data/spec/fixtures/services/ad_group_criterion/mutate_add_criterion_keyword-res.xml +47 -0
- data/spec/fixtures/services/ad_group_criterion/mutate_add_criterion_placement-req.xml +35 -0
- data/spec/fixtures/services/ad_group_criterion/mutate_add_criterion_placement-res.xml +32 -0
- data/spec/fixtures/services/ad_group_criterion/mutate_add_negative_keyword-req.xml +37 -0
- data/spec/fixtures/services/ad_group_criterion/mutate_add_negative_keyword-res.xml +51 -0
- data/spec/fixtures/services/ad_param/mutate_set-req.xml +43 -0
- data/spec/fixtures/services/ad_param/mutate_set-res.xml +29 -0
- data/spec/fixtures/services/bulk_mutate_job/get-req.xml +36 -0
- data/spec/fixtures/services/bulk_mutate_job/get-res.xml +54 -0
- data/spec/fixtures/services/bulk_mutate_job/mutate-req.xml +69 -0
- data/spec/fixtures/services/bulk_mutate_job/mutate-res.xml +48 -0
- data/spec/fixtures/services/campaign/get-req.xml +37 -0
- data/spec/fixtures/services/campaign/get-res.xml +1986 -0
- data/spec/fixtures/services/campaign/mutate_add-req.xml +37 -0
- data/spec/fixtures/services/campaign/mutate_add-res.xml +42 -0
- data/spec/fixtures/services/error.xml +28 -0
- data/spec/fixtures/services/info/get_unit_count-req.xml +30 -0
- data/spec/fixtures/services/info/get_unit_count-res.xml +29 -0
- data/spec/fixtures/services/report_definition/mutate_add-req.xml +24 -0
- data/spec/fixtures/services/report_definition/mutate_add-req_orig.xml +45 -0
- data/spec/fixtures/services/targeting_idea/get-req-all-options.xml +57 -0
- data/spec/fixtures/services/targeting_idea/get-req.xml +60 -0
- data/spec/fixtures/services/targeting_idea/get-res.xml +3601 -0
- data/spec/fixtures/services/v13_account/get_account_info-req.xml +23 -0
- data/spec/fixtures/services/v13_account/get_account_info-res.xml +54 -0
- data/spec/fixtures/services/v13_account/get_client_accounts-req.xml +22 -0
- data/spec/fixtures/services/v13_account/get_client_accounts-res.xml +37 -0
- data/spec/fixtures/services/v13_report/get_all_jobs-req.xml +21 -0
- data/spec/fixtures/services/v13_report/get_all_jobs-res.xml +109 -0
- data/spec/fixtures/services/v13_report/schedule_report_job-req.xml +56 -0
- data/spec/fixtures/services/v13_report/schedule_report_job-res.xml +24 -0
- data/spec/sem4r/account_spec.rb +86 -0
- data/spec/sem4r/ad_group/ad_group_bids_spec.rb +67 -0
- data/spec/sem4r/ad_group/ad_group_service_spec.rb +66 -0
- data/spec/sem4r/ad_group/ad_group_spec.rb +212 -0
- data/spec/sem4r/ad_group_ad/ad_group_ad_operation_spec.rb +88 -0
- data/spec/sem4r/ad_group_ad/ad_group_ad_service_spec.rb +55 -0
- data/spec/sem4r/ad_group_ad/ad_group_ad_spec.rb +173 -0
- data/spec/sem4r/ad_group_criterion/ad_group_criterion_bids_spec.rb +60 -0
- data/spec/sem4r/ad_group_criterion/ad_group_criterion_service_spec.rb +55 -0
- data/spec/sem4r/ad_group_criterion/ad_group_criterion_spec.rb +103 -0
- data/spec/sem4r/ad_group_criterion/criterion_spec.rb +85 -0
- data/spec/sem4r/ad_param/ad_param_service_spec.rb +55 -0
- data/spec/sem4r/ad_param/ad_param_spec.rb +59 -0
- data/spec/sem4r/adwords_spec.rb +110 -0
- data/spec/sem4r/bulk_mutate_job/bulk_mutate_job_service_spec.rb +63 -0
- data/spec/sem4r/bulk_mutate_job/bulk_mutate_job_spec.rb +69 -0
- data/spec/sem4r/bulk_mutate_job/job_operation_spec.rb +48 -0
- data/spec/sem4r/campaign/campaign_service_spec.rb +66 -0
- data/spec/sem4r/campaign/campaign_spec.rb +105 -0
- data/spec/sem4r/cli/cli_spec.rb +71 -0
- data/spec/sem4r/credentials_spec.rb +65 -0
- data/spec/sem4r/report_definition/report_definition_service_spec.rb +44 -0
- data/spec/sem4r/report_definition/report_definition_spec.rb +105 -0
- data/spec/sem4r/rexml_parsing_spec.rb +103 -0
- data/spec/sem4r/services/service_spec.rb +36 -0
- data/spec/sem4r/services/soap_call_spec.rb +115 -0
- data/spec/sem4r/services/soap_message_v13_spec.rb +54 -0
- data/spec/sem4r/soap_attributes_spec.rb +116 -0
- data/spec/sem4r/targeting_idea/targeting_idea_selector_spec.rb +120 -0
- data/spec/sem4r/targeting_idea/targeting_idea_service_spec.rb +44 -0
- data/spec/sem4r/targeting_idea/targeting_idea_spec.rb +53 -0
- data/spec/sem4r/v13_account/account_service_spec.rb +60 -0
- data/spec/sem4r/v13_report/report_service_spec.rb +104 -0
- data/spec/sem4r/v13_report/report_spec.rb +79 -0
- data/spec/sem4r_spec_helper.rb +353 -0
- data/spec/spec_helper.rb +12 -0
- metadata +375 -0
data/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
(The MIT License)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2009-2010 Sem4r sem4ruby@gmail.com
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
= Sem4r
|
|
2
|
+
|
|
3
|
+
Sem4r is a ruby library to access google adwords api, that works with ruby 1.9 and 1.8.
|
|
4
|
+
|
|
5
|
+
The Google AdWords Api (http://code.google.com/apis/adwords/) is a
|
|
6
|
+
webservice soap protocol. From the official site:
|
|
7
|
+
|
|
8
|
+
The Google AdWords API lets developers build applications that interact directly
|
|
9
|
+
with the AdWords platform. With these applications, advertisers and third
|
|
10
|
+
parties can more efficiently and creatively manage their large or complex
|
|
11
|
+
AdWords accounts and campaigns.
|
|
12
|
+
|
|
13
|
+
The official google adwords ruby library adwords4r doesn't work with ruby 1.9,
|
|
14
|
+
because uses soap4r. The soap4r is not supported by ruby 1.9.
|
|
15
|
+
Sem4r don't uses soap4r.
|
|
16
|
+
|
|
17
|
+
Main idea is to use a high level model instead of a low level api.
|
|
18
|
+
You think about clients, campaigns, keywords and not about operations, operands, service calls.
|
|
19
|
+
In the future, the library might decide which api use (sync or async) and when call it!
|
|
20
|
+
|
|
21
|
+
== Usage
|
|
22
|
+
|
|
23
|
+
To access adwords api you need:
|
|
24
|
+
- email account (for sandbox environment a gmail account <myaccount>@gmail.com)
|
|
25
|
+
- password
|
|
26
|
+
- developer token (for sandbox environment is like <myaccount>@gmail.com++EUR)
|
|
27
|
+
|
|
28
|
+
To access the sandbox environment
|
|
29
|
+
|
|
30
|
+
adwords = Adwords.sandbox( :email => "<myaccount>@gmail.com", :password => "secret", :developer_token => "<myaccount>@gmail.com++EUR")
|
|
31
|
+
|
|
32
|
+
To print details about the current account:
|
|
33
|
+
|
|
34
|
+
adwords.account.p_info
|
|
35
|
+
|
|
36
|
+
You can list all client accounts:
|
|
37
|
+
|
|
38
|
+
adwords.account.p_clients
|
|
39
|
+
|
|
40
|
+
See directory examples_sem4r[http://github.com/sem4r/sem4r/tree/master/examples_sem4r/examples_sem4r] for more examples.
|
|
41
|
+
Follow the sem4r.com[http://www.sem4r.com] feed for announcements of new releases.
|
|
42
|
+
|
|
43
|
+
== Install
|
|
44
|
+
|
|
45
|
+
sudo gem install sem4r
|
|
46
|
+
|
|
47
|
+
== Contributors
|
|
48
|
+
|
|
49
|
+
* Glenn Gillen {http://github.com/rubypond}
|
|
50
|
+
|
|
51
|
+
== License
|
|
52
|
+
|
|
53
|
+
(The MIT License)
|
|
54
|
+
|
|
55
|
+
Copyright (c) 2009 - 2010 {Sem4r}[http://www.sem4r.com]
|
|
56
|
+
|
|
57
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
58
|
+
a copy of this software and associated documentation files (the
|
|
59
|
+
'Software'), to deal in the Software without restriction, including
|
|
60
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
61
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
62
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
63
|
+
the following conditions:
|
|
64
|
+
|
|
65
|
+
The above copyright notice and this permission notice shall be
|
|
66
|
+
included in all copies or substantial portions of the Software.
|
|
67
|
+
|
|
68
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
69
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
70
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
71
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
72
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
73
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
74
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake'
|
|
3
|
+
|
|
4
|
+
#
|
|
5
|
+
# jeweler
|
|
6
|
+
#
|
|
7
|
+
begin
|
|
8
|
+
require 'jeweler'
|
|
9
|
+
Jeweler::Tasks.new do |gem|
|
|
10
|
+
|
|
11
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
|
12
|
+
gem.name = "sem4r"
|
|
13
|
+
gem.summary = %Q{Library to access google adwords api. Works with ruby 1.9 and ruby 1.8}
|
|
14
|
+
gem.description = %Q{
|
|
15
|
+
Sem4r is a library to access google adwords api.
|
|
16
|
+
It will works with ruby 1.9 and ruby 1.8 without soap4r.
|
|
17
|
+
It uses a high level model instead of a low level api.
|
|
18
|
+
You think about clients, campaigns, keywords and not about operations, operands, selectors, service calls.
|
|
19
|
+
|
|
20
|
+
This is a ALPHA version don't use in production.
|
|
21
|
+
If you are interested in this project let me now: install it and update periodically, so the gemcutter
|
|
22
|
+
download counter go up. Or subscribe to my feed at sem4r.com. Or watch the project on github.
|
|
23
|
+
Or simply drop me a line in email. However I will know there is someone out of here.
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
gem.authors = ["Sem4r"]
|
|
27
|
+
gem.email = "sem4ruby@gmail.com"
|
|
28
|
+
gem.homepage = "http://www.sem4r.com"
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# dependecies
|
|
32
|
+
#
|
|
33
|
+
# gem.add_dependency 'patron'
|
|
34
|
+
gem.add_dependency 'builder'
|
|
35
|
+
gem.add_development_dependency 'rspec'
|
|
36
|
+
gem.add_development_dependency 'differ'
|
|
37
|
+
|
|
38
|
+
#
|
|
39
|
+
# files
|
|
40
|
+
#
|
|
41
|
+
gem.files = %w{LICENSE README.rdoc Rakefile VERSION.yml sem4r.gemspec}
|
|
42
|
+
gem.files << 'config/sem4r.example.yml'
|
|
43
|
+
gem.files.concat Dir['examples_sem4r/*.rb']
|
|
44
|
+
gem.files.concat Dir['examples_blog/*.rb']
|
|
45
|
+
gem.files.concat Dir['lib/**/*.rb']
|
|
46
|
+
|
|
47
|
+
#
|
|
48
|
+
# test files
|
|
49
|
+
#
|
|
50
|
+
gem.test_files = Dir['spec/**/*.rb']
|
|
51
|
+
gem.test_files.concat Dir['spec/fixtures/**/*']
|
|
52
|
+
|
|
53
|
+
#
|
|
54
|
+
# rubyforge
|
|
55
|
+
#
|
|
56
|
+
# gem.rubyforge_project = 'sem'
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Jeweler::RubyforgeTasks.new do |rubyforge|
|
|
60
|
+
# rubyforge.doc_task = "rdoc"
|
|
61
|
+
# end
|
|
62
|
+
|
|
63
|
+
Jeweler::GemcutterTasks.new
|
|
64
|
+
rescue LoadError
|
|
65
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
#
|
|
69
|
+
# rdoc
|
|
70
|
+
#
|
|
71
|
+
require 'rake/rdoctask'
|
|
72
|
+
|
|
73
|
+
Rake::RDocTask.new do |rdoc|
|
|
74
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
|
75
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
76
|
+
rdoc.title = "sem4r #{version}"
|
|
77
|
+
rdoc.rdoc_files.include('README*')
|
|
78
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
#
|
|
82
|
+
# spec
|
|
83
|
+
#
|
|
84
|
+
|
|
85
|
+
#require 'spec/rake/spectask'
|
|
86
|
+
#
|
|
87
|
+
#desc "Run all examples"
|
|
88
|
+
#Spec::Rake::SpecTask.new('spec') do |t|
|
|
89
|
+
# t.spec_files = FileList['spec/**/*_spec.rb']
|
|
90
|
+
#end
|
|
91
|
+
#
|
|
92
|
+
#desc "Generate HTML report for failing examples"
|
|
93
|
+
#Spec::Rake::SpecTask.new('failing_examples_with_html') do |t|
|
|
94
|
+
# t.spec_files = FileList['failing_examples/**/*.rb']
|
|
95
|
+
# t.spec_opts = ["--format", "html:doc/reports/tools/failing_examples.html", "--diff"]
|
|
96
|
+
# t.fail_on_error = false
|
|
97
|
+
#end
|
|
98
|
+
|
|
99
|
+
task :test => :check_dependencies
|
|
100
|
+
task :default => :spec
|
|
101
|
+
|
|
102
|
+
###############################################################################
|
|
103
|
+
# Sem4r
|
|
104
|
+
|
|
105
|
+
namespace :sem4r do
|
|
106
|
+
#
|
|
107
|
+
# examples
|
|
108
|
+
#
|
|
109
|
+
desc 'run all sem4r example'
|
|
110
|
+
task :examples do
|
|
111
|
+
|
|
112
|
+
Dir['examples_sem4r/*.rb'].sort.each do |filename|
|
|
113
|
+
next unless filename =~ /\d\d.+\.rb$/
|
|
114
|
+
unless system "ruby #{filename}"
|
|
115
|
+
exit
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
puts "All examples run successfull"
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
desc "Start an IRB shell"
|
|
123
|
+
task :shell do
|
|
124
|
+
sh 'IRBRC=`pwd`/config/irbrc.rb irb'
|
|
125
|
+
end
|
|
126
|
+
end
|
data/VERSION.yml
ADDED
data/bin/sem
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# -------------------------------------------------------------------------
|
|
4
|
+
# Copyright (c) 2009-2010 Sem4r sem4ruby@gmail.com
|
|
5
|
+
#
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
7
|
+
# a copy of this software and associated documentation files (the
|
|
8
|
+
# "Software"), to deal in the Software without restriction, including
|
|
9
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
10
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
11
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
12
|
+
# the following conditions:
|
|
13
|
+
#
|
|
14
|
+
# The above copyright notice and this permission notice shall be
|
|
15
|
+
# included in all copies or substantial portions of the Software.
|
|
16
|
+
#
|
|
17
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
18
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
19
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
20
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
21
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
22
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
23
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
24
|
+
#
|
|
25
|
+
# -------------------------------------------------------------------------
|
|
26
|
+
|
|
27
|
+
require 'rubygems'
|
|
28
|
+
|
|
29
|
+
cwd = File.expand_path( File.join( File.dirname(__FILE__), "..", "lib" ) )
|
|
30
|
+
$:.unshift(cwd) unless $:.include?(cwd)
|
|
31
|
+
require 'sem4r_cli'
|
|
32
|
+
|
|
33
|
+
include Sem4r
|
|
34
|
+
exit CliSem.run
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Example config file
|
|
3
|
+
# Adwords profiles
|
|
4
|
+
#
|
|
5
|
+
google_adwords:
|
|
6
|
+
|
|
7
|
+
sandbox:
|
|
8
|
+
# default environment is sandbox (cannot be changed)
|
|
9
|
+
email: example@gmail.com
|
|
10
|
+
password: password
|
|
11
|
+
developer_token: example@gmail.com++EUR
|
|
12
|
+
mutable: true
|
|
13
|
+
|
|
14
|
+
production:
|
|
15
|
+
# default environment is production (cannot be changed)
|
|
16
|
+
email: production@mysite.com
|
|
17
|
+
password: password
|
|
18
|
+
developer_token: productiondevelopertoken
|
|
19
|
+
mutable: true
|
|
20
|
+
|
|
21
|
+
# immutable profile
|
|
22
|
+
# cannot be called service that modify account
|
|
23
|
+
# as adding keyword, disable adgroup, ...
|
|
24
|
+
sandbox_read_only:
|
|
25
|
+
environment: sandbox
|
|
26
|
+
email: example@gmail.com
|
|
27
|
+
password: password
|
|
28
|
+
developer_token: example@gmail.com++EUR
|
|
29
|
+
mutable: false
|
|
30
|
+
|
|
31
|
+
production_read_only:
|
|
32
|
+
environment: production
|
|
33
|
+
email: production@mysite.com
|
|
34
|
+
password: password
|
|
35
|
+
developer_token: productiondevelopertoken
|
|
36
|
+
mutable: false
|
|
37
|
+
|
|
38
|
+
myclient_sandbox:
|
|
39
|
+
environment: sandbox
|
|
40
|
+
email: example@gmail.com
|
|
41
|
+
password: password
|
|
42
|
+
developer_token: example@gmail.com++EUR
|
|
43
|
+
mutable: true
|
|
44
|
+
|
|
45
|
+
myclient_production:
|
|
46
|
+
environment: production
|
|
47
|
+
email: production@anothersite.com
|
|
48
|
+
password: password
|
|
49
|
+
developer_token: productiondevelopertoken
|
|
50
|
+
mutable: true
|
|
51
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'sem4r'
|
|
3
|
+
include Sem4r
|
|
4
|
+
|
|
5
|
+
adwords = Adwords.sandbox
|
|
6
|
+
|
|
7
|
+
#adwords = Adwords.sandbox(
|
|
8
|
+
# :email => "<myaccount>@gmail.com",
|
|
9
|
+
# :password => "secret",
|
|
10
|
+
# :developer_token => "<myaccount>@gmail.com++EUR")
|
|
11
|
+
adwords.account.p_client_accounts
|
|
12
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'sem4r'
|
|
3
|
+
include Sem4r
|
|
4
|
+
|
|
5
|
+
adwords = Adwords.sandbox
|
|
6
|
+
|
|
7
|
+
#adwords = Adwords.sandbox(
|
|
8
|
+
# :email => "<myaccount>@gmail.com",
|
|
9
|
+
# :password => "secret",
|
|
10
|
+
# :developer_token => "<myaccount>@gmail.com++EUR")
|
|
11
|
+
|
|
12
|
+
account = adwords.account.client_accounts[1]
|
|
13
|
+
|
|
14
|
+
campaign = account.create_campaign do
|
|
15
|
+
name "new campaign #{Time.now.strftime('%m%d-%H%M%S')}"
|
|
16
|
+
|
|
17
|
+
adgroup do
|
|
18
|
+
name "new adgroup #{Time.now.strftime('%m%d-%H%M%S')}"
|
|
19
|
+
keyword do
|
|
20
|
+
text "keyword"
|
|
21
|
+
match "BROAD"
|
|
22
|
+
end
|
|
23
|
+
placement do
|
|
24
|
+
url "www.example.com"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
campaign.p_adgroups(true)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'sem4r'
|
|
3
|
+
include Sem4r
|
|
4
|
+
|
|
5
|
+
adwords = Adwords.sandbox
|
|
6
|
+
|
|
7
|
+
#adwords = Adwords.sandbox(
|
|
8
|
+
# :email => "<myaccount>@gmail.com",
|
|
9
|
+
# :password => "secret",
|
|
10
|
+
# :developer_token => "<myaccount>@gmail.com++EUR")
|
|
11
|
+
|
|
12
|
+
client_account = adwords.account.client_accounts.first
|
|
13
|
+
|
|
14
|
+
campaign = client_account.campaign do
|
|
15
|
+
name "Skis"
|
|
16
|
+
|
|
17
|
+
adgroup do
|
|
18
|
+
name "Skis for sales"
|
|
19
|
+
|
|
20
|
+
text_ad do
|
|
21
|
+
headline "Save on Rossignol skis"
|
|
22
|
+
description1 "Great deal on Rissignol starting at"
|
|
23
|
+
description2 "{param1:lowprices}! Save {param2: big time}!"
|
|
24
|
+
url "http://skideals.com"
|
|
25
|
+
display_url "www.SkiDeals.com"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
keyword do
|
|
29
|
+
text "ski deal rossignol"
|
|
30
|
+
match "BROAD"
|
|
31
|
+
|
|
32
|
+
ad_param do
|
|
33
|
+
index 1
|
|
34
|
+
text "$279"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
ad_param do
|
|
38
|
+
index 2
|
|
39
|
+
text "20%"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
campaign.adgroups(true).each do |adgroup|
|
|
46
|
+
adgroup.p_ad_params
|
|
47
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# -------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2009-2010 Sem4r sem4ruby@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
# -------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
require File.dirname(__FILE__) + "/example_helper"
|
|
25
|
+
|
|
26
|
+
run_example(__FILE__) do |adwords|
|
|
27
|
+
account = adwords.account
|
|
28
|
+
account.p_client_accounts
|
|
29
|
+
|
|
30
|
+
client_account = account.client_accounts.first
|
|
31
|
+
client_account.p_campaigns
|
|
32
|
+
|
|
33
|
+
unless client_account.campaigns.empty?
|
|
34
|
+
campaign = client_account.campaigns.first
|
|
35
|
+
campaign.p_ad_groups
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# -------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2009-2010 Sem4r sem4ruby@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
# -------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
require File.dirname(__FILE__) + "/example_helper"
|
|
25
|
+
|
|
26
|
+
run_example(__FILE__) do |adwords|
|
|
27
|
+
adwords.account.p_info
|
|
28
|
+
(Account::UsageTypes - [Account::METHOD_COST]).each do |usage_type|
|
|
29
|
+
n = adwords.account.year_unit_cost(usage_type)
|
|
30
|
+
puts "#{usage_type} -> #{n}"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# -------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2009-2010 Sem4r sem4ruby@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
# -------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
require File.dirname(__FILE__) + "/example_helper"
|
|
25
|
+
|
|
26
|
+
run_example(__FILE__) do |adwords|
|
|
27
|
+
puts "List AdGroup Advertising"
|
|
28
|
+
|
|
29
|
+
adwords.account.client_accounts.each do |client_account|
|
|
30
|
+
puts "examinate account '#{client_account.credentials.client_email}'"
|
|
31
|
+
client_account.campaigns.each do |campaign|
|
|
32
|
+
puts "examinate campaign '#{campaign}'"
|
|
33
|
+
campaign.ad_groups.each do |ad_group|
|
|
34
|
+
puts "examinate adgroup '#{ad_group}'"
|
|
35
|
+
ad_group.ads.each do |ad|
|
|
36
|
+
row = []
|
|
37
|
+
row << client_account.credentials.client_email
|
|
38
|
+
row << campaign.name
|
|
39
|
+
row << ad_group.name
|
|
40
|
+
row << ad.url
|
|
41
|
+
row << ad.display_url
|
|
42
|
+
puts row.join(",")
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# -------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2009-2010 Sem4r sem4ruby@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
# -------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
require File.dirname(__FILE__) + "/example_helper"
|
|
25
|
+
|
|
26
|
+
run_example(__FILE__) do |adwords|
|
|
27
|
+
puts "List AdGroup Keywords"
|
|
28
|
+
|
|
29
|
+
adwords.account.client_accounts.each do |client_account|
|
|
30
|
+
puts "examinate account '#{client_account.credentials.client_email}'"
|
|
31
|
+
client_account.campaigns.each do |campaign|
|
|
32
|
+
puts "examinate campaign '#{campaign}'"
|
|
33
|
+
campaign.ad_groups.each do |ad_group|
|
|
34
|
+
ad_group.criterions.each do |criterion|
|
|
35
|
+
row = []
|
|
36
|
+
row << client_account.credentials.client_email
|
|
37
|
+
row << campaign.name
|
|
38
|
+
row << ad_group.name
|
|
39
|
+
|
|
40
|
+
row << criterion.type
|
|
41
|
+
case criterion.type
|
|
42
|
+
when Criterion::Keyword
|
|
43
|
+
row << criterion.text
|
|
44
|
+
row << criterion.match
|
|
45
|
+
when Criterion::Placement
|
|
46
|
+
row << criterion.url
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
puts row.join(",")
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# -------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2009-2010 Sem4r sem4ruby@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
# -------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
require File.dirname(__FILE__) + "/example_helper"
|
|
26
|
+
|
|
27
|
+
run_example(__FILE__) do |adwords|
|
|
28
|
+
account = adwords.account
|
|
29
|
+
account.p_reports
|
|
30
|
+
|
|
31
|
+
report = account.report do
|
|
32
|
+
name "Test Report"
|
|
33
|
+
type "Structure"
|
|
34
|
+
start_day "2009-01-01"
|
|
35
|
+
end_day "2009-01-31"
|
|
36
|
+
aggregation "Keyword"
|
|
37
|
+
column "Campaign"
|
|
38
|
+
column "AdGroup"
|
|
39
|
+
column "Keyword"
|
|
40
|
+
column "KeywordTypeDisplay"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
report.validate
|
|
44
|
+
job = report.schedule
|
|
45
|
+
job.wait(5) { |r, s| puts "status #{s}" }
|
|
46
|
+
report.download(tmp_dirname + "/05_request_report.xml")
|
|
47
|
+
|
|
48
|
+
account.p_reports(true)
|
|
49
|
+
report = account.reports.first
|
|
50
|
+
puts report.status(true)
|
|
51
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# -------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2009-2010 Sem4r sem4ruby@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
# -------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
require File.dirname(__FILE__) + "/example_helper"
|
|
26
|
+
|
|
27
|
+
run_example(__FILE__) do |adwords|
|
|
28
|
+
|
|
29
|
+
account = adwords.account
|
|
30
|
+
|
|
31
|
+
# account.p_report_definitions
|
|
32
|
+
|
|
33
|
+
rd = account.report_definition do
|
|
34
|
+
name "report"
|
|
35
|
+
end
|
|
36
|
+
rd.save
|
|
37
|
+
|
|
38
|
+
puts rd.to_s
|
|
39
|
+
|
|
40
|
+
end
|