google_sheets_to_csv 1.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/bin/google_sheets_to_csv +79 -0
  3. metadata +106 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: dadacc1908e03ae084c100af6e095e06dd889f7db1ff0d337cade5e5986b7e92
4
+ data.tar.gz: 6853f1ce17cdeee172cfbfed219207daab6e401fc37068c1ad585727f15949a7
5
+ SHA512:
6
+ metadata.gz: 416e7534216396c8c909d6ce5c2a50256b4f7731e7e18810a338f4099bb3b20e5b22e7c9b10282b8d5b1529adc489262d3083414959bcc08a1a686d5ceedd04b
7
+ data.tar.gz: f9b46d01a1a80bab4702c8d70e85513a7db0d3a262f1a9e613722c6b85654f9495b1abd0abb121e7d412da5488f0fc174a3a7ac78130c71e617c3f5ac61c9cea
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'googleauth'
5
+ require 'google/apis/sheets_v4'
6
+ require 'optparse'
7
+ require 'csv'
8
+
9
+ options = { ranges: %w[A:ZZZ] }
10
+
11
+ option_parser = OptionParser.new do |opts|
12
+ opts.banner = <<~USAGE
13
+ Usage: #{__FILE__} [options] [SHEET_ID]
14
+
15
+ Environment Variables:
16
+
17
+ - GOOGLE_SHEETS_TO_CSV_KEY - used for only public sheets
18
+ - GOOGLE_SHEETS_TO_CSV_CREDENTIAL_PATH - used for both public and private sheets
19
+
20
+ USAGE
21
+
22
+ opts.on('-r', '--ranges A:Z,Sheet2', Array, 'A list of A1 notations of the values to retrieve.') do |ranges|
23
+ options[:ranges] = ranges
24
+ end
25
+
26
+ opts.on('-h', '--help', 'Prints this help') do
27
+ puts opts
28
+ exit
29
+ end
30
+ end
31
+ option_parser.parse!
32
+
33
+ sheet_id = ARGV.shift
34
+
35
+ if sheet_id.nil?
36
+ puts option_parser
37
+ exit
38
+ end
39
+
40
+ unless ENV['GOOGLE_SHEETS_TO_CSV_KEY'] || ENV['GOOGLE_SHEETS_TO_CSV_CREDENTIAL_PATH']
41
+ warn <<~WARNING
42
+ Missing environment variables:
43
+
44
+ - GOOGLE_SHEETS_TO_CSV_KEY
45
+ - GOOGLE_SHEETS_TO_CSV_CREDENTIAL_PATH
46
+
47
+ Please set at least one of them.
48
+ WARNING
49
+ end
50
+
51
+ sheet = Google::Apis::SheetsV4::SheetsService.new
52
+ sheet.key = ENV['GOOGLE_SHEETS_TO_CSV_KEY'] if ENV['GOOGLE_SHEETS_TO_CSV_KEY']
53
+ if ENV['GOOGLE_SHEETS_TO_CSV_CREDENTIAL_PATH']
54
+ sheet.authorization =
55
+ Google::Auth::ServiceAccountCredentials
56
+ .make_creds(
57
+ json_key_io: File.open(ENV['GOOGLE_SHEETS_TO_CSV_CREDENTIAL_PATH']),
58
+ scope: Google::Apis::SheetsV4::AUTH_SPREADSHEETS_READONLY
59
+ )
60
+ end
61
+
62
+ begin
63
+ response = sheet.batch_get_spreadsheet_values(sheet_id, ranges: options[:ranges])
64
+ rescue Google::Apis::ClientError => e
65
+ body = JSON.parse(e.body)['error']
66
+ warn body['message']
67
+ case body['status']
68
+ when 'PERMISSION_DENIED'
69
+ warn 'Please try to set GOOGLE_SHEETS_TO_CSV_CREDENTIAL_PATH and grant permissions to the service account email.'
70
+ end
71
+ exit 1
72
+ end
73
+
74
+ csv = CSV.new($stdout)
75
+ response.value_ranges.each do |value_range|
76
+ value_range.values.each do |row|
77
+ csv << row
78
+ end
79
+ end
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: google_sheets_to_csv
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jian Weihang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-03-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '13.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: google-api-client
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.36.4
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '1'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 0.36.4
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '1'
61
+ - !ruby/object:Gem::Dependency
62
+ name: googleauth
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '='
66
+ - !ruby/object:Gem::Version
67
+ version: 0.10.0
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '='
73
+ - !ruby/object:Gem::Version
74
+ version: 0.10.0
75
+ description: A Command-Line Tool converting Google Sheets to CSV
76
+ email: tonytonyjan@gmail.com
77
+ executables:
78
+ - google_sheets_to_csv
79
+ extensions: []
80
+ extra_rdoc_files: []
81
+ files:
82
+ - bin/google_sheets_to_csv
83
+ homepage: https://github.com/tonytonyjan/google_sheets_to_csv
84
+ licenses:
85
+ - MIT
86
+ metadata: {}
87
+ post_install_message:
88
+ rdoc_options: []
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubygems_version: 3.1.2
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: A Command-Line Tool converting Google Sheets to CSV
106
+ test_files: []