embulk-output-google_sheets_ruby 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: d69ca03f0c92a37fa74bd5ca901d64d00279fc76b600f65d9126bffc339993a7
4
- data.tar.gz: 19a5c30537e2e4b0d5d43dab1455e4c88404d97d8ebabfbfb9b1621168be0436
2
+ SHA1:
3
+ metadata.gz: 500291acae92860089b343c2e66eb086486618f7
4
+ data.tar.gz: 13410dd78807a8c274077e8bdb08993617d2c657
5
5
  SHA512:
6
- metadata.gz: 01bb9447433ec9d61dd7e5722bf8879f3e503f16c46d95a57bfddc18e1110c22ae285c03cb540afe30cc877d4e8c5d2df4567565ce64716e4aad6fae249d7572
7
- data.tar.gz: d5f2bb8960981e2f5724ea593161bd642cd51e72582191b93637c1fb18f12656b20e0ad009bd13faa8999d78ade17d6dc05a21a823f2aad19a8baa902d1a6bcd
6
+ metadata.gz: c19e4bc6ffcf5d5a9f0e7d2e36361eb94a207242bd54338c9508ab293160b4832f1453dd8a7f2fc68438e795789c469eed8e3aa5659ed49a66914bd30a2a2278
7
+ data.tar.gz: 1b1944d8bec7627980219198bb36d8ceea9aabb96e32b6200edce8fb3d96017d2cb079711a77310c7580c6d1368583292b8fd7378a4ebf27abe66907cd0b0c15
data/.gitignore CHANGED
@@ -3,4 +3,6 @@
3
3
  /tmp/
4
4
  /.bundle/
5
5
  /Gemfile.lock
6
- /vendor/
6
+ /vendor/
7
+
8
+ authorized_user_credentials.json
data/Gemfile CHANGED
@@ -1,2 +1,4 @@
1
1
  source 'https://rubygems.org/'
2
2
  gemspec
3
+
4
+ gem "highline"
data/README.md CHANGED
@@ -4,15 +4,46 @@ Dumps records to Google Sheets.
4
4
 
5
5
  ## Overview
6
6
 
7
- * **Plugin type**: output
8
- * **Load all or nothing**: yes
9
- * **Resume supported**: no
10
- * **Cleanup supported**: no
7
+ - **Plugin type**: output
8
+ - **Load all or nothing**: yes
9
+ - **Resume supported**: no
10
+ - **Cleanup supported**: no
11
11
 
12
12
  ## Configuration
13
13
 
14
- - **spreadsheet_id**: Spreadsheet ID (string, required)
15
- - **credentials_path**: Credentials JSON path (string, default: `"credentials.json"`)
14
+ | name | type | requirement | default | description |
15
+ | :--------------- | :----- | :---------- | :------------------- | :------------------------------------- |
16
+ | spreadsheet_id | string | required | | |
17
+ | credentials_path | string | optional | `"credentials.json"` | keyfile path |
18
+ | range | string | optional | `"A1"` | |
19
+ | auth_method | string | optional | `service_account` | `service_account` or `authorized_user` |
20
+
21
+ ##### about credentials_path
22
+
23
+ - if `auth_method` is `service_account`, set the service account credential json file path.
24
+ - if `auth_method` is `authorized_user`, this plugin supposes the format is the below.
25
+ https://github.com/medjed/embulk-input-google_spreadsheets#prepare-json-file-for-auth_method-authorized_user
26
+
27
+ ```json
28
+ {
29
+ "client_id": "xxxxxxxxxxx.apps.googleusercontent.com",
30
+ "client_secret": "xxxxxxxxxxx",
31
+ "refresh_token": "xxxxxxxxxxx"
32
+ }
33
+ ```
34
+
35
+ ## Prepare JSON file for auth_method: authorized_user
36
+
37
+ You may use [example/setup_authorized_user_credentials.rb](example/setup_authorized_user_credentials.rb) to prepare OAuth token.
38
+
39
+ Go to GCP console > API Manager > Credentials > Create 'OAuth Client ID'. Get the client id and client secret.
40
+
41
+ Run `setup_authorized_user_credentials.rb` to get `refresh_token`.
42
+
43
+ ```
44
+ bundle --path vendor/bundle
45
+ bundle exec ruby example/setup_authorized_user_credentials.rb
46
+ ```
16
47
 
17
48
  ## Example
18
49
 
@@ -24,6 +55,18 @@ out:
24
55
  range: A1
25
56
  ```
26
57
 
58
+ ## Prepare JSON file for auth_method: authorized_user
59
+
60
+ You may use [example/setup_authorized_user_credentials.rb](example/setup_authorized_user_credentials.rb) to prepare OAuth token.
61
+
62
+ Go to GCP console > API Manager > Credentials > Create 'OAuth Client ID'. Get the client id and client secret.
63
+
64
+ Run `setup_authorized_user_credentials.rb` to get `refresh_token`.
65
+
66
+ ```
67
+ bundle --path vendor/bundle
68
+ bundle exec ruby example/setup_authorized_user_credentials.rb
69
+ ```
27
70
 
28
71
  ## Build
29
72
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = 'embulk-output-google_sheets_ruby'
4
- spec.version = '0.1.0'
4
+ spec.version = '0.1.1'
5
5
  spec.authors = ['ariarijp']
6
6
  spec.summary = 'Google Sheets Ruby output plugin for Embulk'
7
7
  spec.description = 'Dumps records to Google Sheets.'
@@ -0,0 +1,34 @@
1
+ require 'googleauth'
2
+ require 'google/apis/sheets_v4'
3
+ require 'highline/import'
4
+ require 'json'
5
+
6
+ puts 'Before setup, open this page https://developers.google.com/identity/protocols/OAuth2'
7
+ puts 'then get OAuth 2.0 credentials such as a client ID and client secret according to the above page.'
8
+ puts
9
+
10
+ credentials = Google::Auth::UserRefreshCredentials.new(
11
+ client_id: ask('Enter client_id: '),
12
+ client_secret: ask('Enter client_secret: '),
13
+ scope: Google::Apis::SheetsV4::AUTH_SPREADSHEETS,
14
+ redirect_uri: 'urn:ietf:wg:oauth:2.0:oob'
15
+ )
16
+
17
+ credentials.code = ask(
18
+ "1. Open this page '#{credentials.authorization_uri.to_s}'.\n" \
19
+ '2. Enter the authorization code shown in the page: '
20
+ ) {|q| q.echo = false}
21
+
22
+ credentials.fetch_access_token!
23
+
24
+ data = {
25
+ client_id: credentials.client_id,
26
+ client_secret: credentials.client_secret,
27
+ refresh_token: credentials.refresh_token,
28
+ }.to_json
29
+ file = File.expand_path('authorized_user_credentials.json', __dir__)
30
+ File.open(file, 'w') do |f|
31
+ f.write(data)
32
+ end
33
+
34
+ puts "Success. See '#{file}'."
@@ -17,7 +17,8 @@ module Embulk
17
17
  'range' => config.param('range', :string, default: 'A1'),
18
18
  'credentials_path' => config.param('credentials_path',
19
19
  :string,
20
- default: 'credentials.json')
20
+ default: 'credentials.json'),
21
+ 'auth_method' => config.param('auth_method', :string, default: 'service_account')
21
22
  }
22
23
 
23
24
  yield(task)
@@ -29,6 +30,7 @@ module Embulk
29
30
  @spreadsheet_id = task['spreadsheet_id']
30
31
  @credentials_path = task['credentials_path']
31
32
  @range = task['range']
33
+ @auth_method = task['auth_method']
32
34
  @rows = []
33
35
  @rows << schema.map(&:name)
34
36
 
@@ -55,13 +57,20 @@ module Embulk
55
57
  end
56
58
 
57
59
  def authorize
58
- authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
59
- json_key_io: File.open(@credentials_path),
60
- scope: SCOPE
61
- )
62
- authorizer.fetch_access_token!
63
-
64
- authorizer
60
+ case @auth_method
61
+ when 'service_account'
62
+ return Google::Auth::ServiceAccountCredentials.make_creds(
63
+ json_key_io: File.open(@credentials_path),
64
+ scope: SCOPE
65
+ )
66
+ when 'authorized_user'
67
+ return Google::Auth::UserRefreshCredentials.make_creds(
68
+ json_key_io: File.open(@credentials_path),
69
+ scope: SCOPE
70
+ )
71
+ else
72
+ raise ConfigError.new("Unknown auth method: #{auth_method}")
73
+ end
65
74
  end
66
75
 
67
76
  def update_sheet(value_range)
metadata CHANGED
@@ -1,66 +1,66 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-google_sheets_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ariarijp
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-02 00:00:00.000000000 Z
11
+ date: 2019-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: google-api-client
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
18
  version: '0.8'
20
- type: :runtime
19
+ name: google-api-client
21
20
  prerelease: false
21
+ type: :runtime
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.8'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
32
  version: 1.10.6
34
- type: :development
33
+ name: bundler
35
34
  prerelease: false
35
+ type: :development
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.10.6
41
41
  - !ruby/object:Gem::Dependency
42
- name: embulk
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - ">="
46
45
  - !ruby/object:Gem::Version
47
46
  version: 0.8.39
48
- type: :development
47
+ name: embulk
49
48
  prerelease: false
49
+ type: :development
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.8.39
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - ">="
60
59
  - !ruby/object:Gem::Version
61
60
  version: '10.0'
62
- type: :development
61
+ name: rake
63
62
  prerelease: false
63
+ type: :development
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
@@ -80,12 +80,13 @@ files:
80
80
  - README.md
81
81
  - Rakefile
82
82
  - embulk-output-google_sheets_ruby.gemspec
83
+ - example/setup_authorized_user_credentials.rb
83
84
  - lib/embulk/output/google_sheets_ruby.rb
84
85
  homepage: https://github.com/ariarijp/embulk-output-google_sheets_ruby
85
86
  licenses:
86
87
  - MIT
87
88
  metadata: {}
88
- post_install_message:
89
+ post_install_message:
89
90
  rdoc_options: []
90
91
  require_paths:
91
92
  - lib
@@ -100,9 +101,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
103
  requirements: []
103
- rubyforge_project:
104
- rubygems_version: 2.7.6
105
- signing_key:
104
+ rubyforge_project:
105
+ rubygems_version: 2.6.14
106
+ signing_key:
106
107
  specification_version: 4
107
108
  summary: Google Sheets Ruby output plugin for Embulk
108
109
  test_files: []