google_drive 2.0.1 → 2.0.2
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.
- checksums.yaml +4 -4
- data/README.md +139 -0
- data/lib/google_drive.rb +25 -10
- data/lib/google_drive/acl.rb +1 -1
- data/lib/google_drive/collection.rb +18 -0
- data/lib/google_drive/file.rb +4 -4
- data/lib/google_drive/session.rb +33 -27
- data/lib/google_drive/worksheet.rb +3 -5
- metadata +5 -50
- data/README.rdoc +0 -101
- data/doc_src/google_drive/acl.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f3de00c7d9e7589646ba3b4a85c5f94ffec2d2f
|
4
|
+
data.tar.gz: 09aea7b2c3900145d6415c6614f254ab347562c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8357b2b90f33bc5a655904983a2ee77e46c768142ddc0e3ead86c313938a100992d89c2ee02f6d9a1e58ff696829f541859a1a9d7bf5741e0a51d7d6c05864b
|
7
|
+
data.tar.gz: f4aed23d0b698072149e54ac154667a4ea78eceaa19364962a89431035aa6131fdae58b1f83a5494431499c8d08a218dc4efce5f50f874692ea13d55fb423a5c
|
data/README.md
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
This is a Ruby library to read/write files/spreadsheets in Google Drive/Docs.
|
2
|
+
|
3
|
+
NOTE: This is NOT a library to create Google Drive App.
|
4
|
+
|
5
|
+
|
6
|
+
## Migration from ver. 0.x.x / 1.x.x to to ver. 2.x.x
|
7
|
+
|
8
|
+
There are some incompatible API changes. See
|
9
|
+
[MIGRATING.md](https://github.com/gimite/google-drive-ruby/blob/master/MIGRATING.md).
|
10
|
+
|
11
|
+
|
12
|
+
## How to install
|
13
|
+
|
14
|
+
Add this line to your application's Gemfile:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem 'google_drive'
|
18
|
+
```
|
19
|
+
|
20
|
+
And then execute:
|
21
|
+
|
22
|
+
```
|
23
|
+
$ bundle
|
24
|
+
```
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
```
|
29
|
+
$ gem install google_drive
|
30
|
+
```
|
31
|
+
|
32
|
+
If you need system wide installation, execute below:
|
33
|
+
|
34
|
+
```
|
35
|
+
$ sudo gem install google_drive
|
36
|
+
```
|
37
|
+
|
38
|
+
## How to use
|
39
|
+
|
40
|
+
First, follow Step 1 and 2 of "Authorizing requests with OAuth 2.0" in [this
|
41
|
+
page](https://developers.google.com/drive/v3/web/about-auth) to get a client
|
42
|
+
ID and client secret for OAuth. Set "Application type" to "Other" in the form
|
43
|
+
to create a client ID if you use GoogleDrive.saved_session method as in the
|
44
|
+
example below.
|
45
|
+
|
46
|
+
Next, create a file config.json which contains the client ID and crient secret
|
47
|
+
you got above, which looks like:
|
48
|
+
|
49
|
+
```json
|
50
|
+
{
|
51
|
+
"client_id": "xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
|
52
|
+
"client_secret": "xxxxxxxxxxxxxxxxxxxxxxxx"
|
53
|
+
}
|
54
|
+
```
|
55
|
+
|
56
|
+
Note that when using the OAuth flow, the client will be able to access all files
|
57
|
+
belonging to the the user who generated the token. To set permissions more
|
58
|
+
specifically, you may want to consider using a service account. [See full docs
|
59
|
+
in the login_with_oauth method.](https://github.com/gimite/google-drive-ruby/blob/lib/google_drive.rb)
|
60
|
+
|
61
|
+
### Example to read/write files in Google Drive:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
require "google_drive"
|
65
|
+
|
66
|
+
# Creates a session. This will prompt the credential via command line for the
|
67
|
+
# first time and save it to config.json file for later usages.
|
68
|
+
session = GoogleDrive.saved_session("config.json")
|
69
|
+
|
70
|
+
# Gets list of remote files.
|
71
|
+
session.files.each do |file|
|
72
|
+
p file.title
|
73
|
+
end
|
74
|
+
|
75
|
+
# Uploads a local file.
|
76
|
+
session.upload_from_file("/path/to/hello.txt", "hello.txt", convert: false)
|
77
|
+
|
78
|
+
# Downloads to a local file.
|
79
|
+
file = session.file_by_title("hello.txt")
|
80
|
+
file.download_to_file("/path/to/hello.txt")
|
81
|
+
|
82
|
+
# Updates content of the remote file.
|
83
|
+
file.update_from_file("/path/to/hello.txt")
|
84
|
+
```
|
85
|
+
|
86
|
+
### Example to read/write spreadsheets:
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
require "google_drive"
|
90
|
+
|
91
|
+
# Creates a session. This will prompt the credential via command line for the
|
92
|
+
# first time and save it to config.json file for later usages.
|
93
|
+
session = GoogleDrive.saved_session("config.json")
|
94
|
+
|
95
|
+
# First worksheet of
|
96
|
+
# https://docs.google.com/spreadsheet/ccc?key=pz7XtlQC-PYx-jrVMJErTcg
|
97
|
+
# Or https://docs.google.com/a/someone.com/spreadsheets/d/pz7XtlQC-PYx-jrVMJErTcg/edit?usp=drive_web
|
98
|
+
ws = session.spreadsheet_by_key("pz7XtlQC-PYx-jrVMJErTcg").worksheets[0]
|
99
|
+
|
100
|
+
# Gets content of A2 cell.
|
101
|
+
p ws[2, 1] #==> "hoge"
|
102
|
+
|
103
|
+
# Changes content of cells.
|
104
|
+
# Changes are not sent to the server until you call ws.save().
|
105
|
+
ws[2, 1] = "foo"
|
106
|
+
ws[2, 2] = "bar"
|
107
|
+
ws.save
|
108
|
+
|
109
|
+
# Dumps all cells.
|
110
|
+
(1..ws.num_rows).each do |row|
|
111
|
+
(1..ws.num_cols).each do |col|
|
112
|
+
p ws[row, col]
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
# Yet another way to do so.
|
117
|
+
p ws.rows #==> [["fuga", ""], ["foo", "bar]]
|
118
|
+
|
119
|
+
# Reloads the worksheet to get changes by other clients.
|
120
|
+
ws.reload
|
121
|
+
```
|
122
|
+
|
123
|
+
## Full API documentation
|
124
|
+
|
125
|
+
[API documentation in RubyDoc.info](http://www.rubydoc.info/gems/google_drive)
|
126
|
+
|
127
|
+
## Source code
|
128
|
+
|
129
|
+
[Github](http://github.com/gimite/google-drive-ruby)
|
130
|
+
|
131
|
+
The license of this source is "New BSD Licence"
|
132
|
+
|
133
|
+
## Supported environments
|
134
|
+
|
135
|
+
Ruby 2.0.0 or later. Checked with Ruby 2.3.0.
|
136
|
+
|
137
|
+
## Author
|
138
|
+
|
139
|
+
[Hiroshi Ichikawa](http://gimite.net/en/index.php?Contact)
|
data/lib/google_drive.rb
CHANGED
@@ -48,6 +48,22 @@ module GoogleDrive
|
|
48
48
|
# session = GoogleDrive.login_with_oauth(credentials.access_token)
|
49
49
|
#
|
50
50
|
# For command-line apps, it would be easier to use saved_session method instead.
|
51
|
+
#
|
52
|
+
# To use service account authentication:
|
53
|
+
#
|
54
|
+
# 1. Go to the Credentials tab for your project in the Google API console: https://console.developers.google.com/apis/credentials
|
55
|
+
# 2. Create a service account key, and download the keys as JSON. (This address ends in iam.gserviceaccount.com.)
|
56
|
+
# 3. Share the Drive folders or files with the client_email address in the JSON you downloaded.
|
57
|
+
# 3. Set a GOOGLE_CLIENT_EMAIL environmental variable based on the client_email.
|
58
|
+
# 4. Set a GOOGLE_PRIVATE_KEY environmental variable based on the private_key in the JSON. Be careful to preserve newlines.
|
59
|
+
# 5. Create a GoogleDrive session from these environmental variables:
|
60
|
+
#
|
61
|
+
# session = GoogleDrive.login_with_oauth(Google::Auth::ServiceAccountCredentials.from_env(
|
62
|
+
# 'https://www.googleapis.com/auth/drive'
|
63
|
+
# ))
|
64
|
+
# The scope can be adjusted to be as broad or specific as necessary.
|
65
|
+
# The full list of scopes is available here: https://developers.google.com/drive/v2/web/scopes.
|
66
|
+
#
|
51
67
|
def self.login_with_oauth(client_or_access_token, proxy = nil)
|
52
68
|
Session.new(client_or_access_token, proxy)
|
53
69
|
end
|
@@ -91,14 +107,15 @@ module GoogleDrive
|
|
91
107
|
# save
|
92
108
|
def self.saved_session(
|
93
109
|
path_or_config = nil, proxy = nil, client_id = nil, client_secret = nil)
|
94
|
-
config =
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
110
|
+
config =
|
111
|
+
case path_or_config
|
112
|
+
when String
|
113
|
+
Config.new(path_or_config)
|
114
|
+
when nil
|
115
|
+
Config.new(ENV['HOME'] + '/.ruby_google_drive.token')
|
116
|
+
else
|
117
|
+
path_or_config
|
118
|
+
end
|
102
119
|
|
103
120
|
config.scope ||= [
|
104
121
|
'https://www.googleapis.com/auth/drive',
|
@@ -122,8 +139,6 @@ module GoogleDrive
|
|
122
139
|
'Specifying a proxy object is no longer supported. Set ENV["http_proxy"] instead.')
|
123
140
|
end
|
124
141
|
|
125
|
-
refresh_token = config.refresh_token
|
126
|
-
|
127
142
|
credentials = Google::Auth::UserRefreshCredentials.new(
|
128
143
|
client_id: config.client_id,
|
129
144
|
client_secret: config.client_secret,
|
data/lib/google_drive/acl.rb
CHANGED
@@ -63,7 +63,7 @@ module GoogleDrive
|
|
63
63
|
# https://developers.google.com/drive/v3/reference/permissions/create
|
64
64
|
def push(params_or_entry, options = {})
|
65
65
|
entry = params_or_entry.is_a?(AclEntry) ? params_or_entry : AclEntry.new(params_or_entry)
|
66
|
-
api_permission = @session.drive.create_permission(@file.id, entry.params, fields: '*')
|
66
|
+
api_permission = @session.drive.create_permission(@file.id, entry.params, {fields: '*'}.merge(options))
|
67
67
|
new_entry = AclEntry.new(api_permission, self)
|
68
68
|
@entries.push(new_entry)
|
69
69
|
new_entry
|
@@ -60,6 +60,24 @@ module GoogleDrive
|
|
60
60
|
files_with_type(nil, params, &block)
|
61
61
|
end
|
62
62
|
|
63
|
+
# Same as Session#upload_from_file. It uploads file to current collection
|
64
|
+
def upload_from_file(path, title = nil, params = {})
|
65
|
+
params = {parents: [self.id]}.merge(params)
|
66
|
+
@session.upload_from_file(path, title, params)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Same as Session#upload_from_io. It uploads file to current collection
|
70
|
+
def upload_from_io(io, title = 'Untitled', params = {})
|
71
|
+
params = {parents: [self.id]}.merge(params)
|
72
|
+
@session.upload_from_io(io, title, params)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Same as Session#upload_from_string. It uploads file to current collection
|
76
|
+
def upload_from_string(content, title = 'Untitled', params = {})
|
77
|
+
params = {parents: [self.id]}.merge(params)
|
78
|
+
@session.upload_from_string(content, title, params)
|
79
|
+
end
|
80
|
+
|
63
81
|
alias_method :contents, :files
|
64
82
|
|
65
83
|
# Returns all the spreadsheets in the collection.
|
data/lib/google_drive/file.rb
CHANGED
@@ -78,7 +78,7 @@ module GoogleDrive
|
|
78
78
|
# This returns zero or one file type. You may be able to download the file in other formats using
|
79
79
|
# export_as_file, export_as_string, or export_to_io.
|
80
80
|
def available_content_types
|
81
|
-
api_file.
|
81
|
+
api_file.web_content_link ? [api_file.mime_type] : []
|
82
82
|
end
|
83
83
|
|
84
84
|
# Downloads the file to a local file. e.g.
|
@@ -86,7 +86,7 @@ module GoogleDrive
|
|
86
86
|
#
|
87
87
|
# To export the file in other formats, use export_as_file.
|
88
88
|
def download_to_file(path, params = {})
|
89
|
-
@session.drive.get_file(id, download_dest: path)
|
89
|
+
@session.drive.get_file(id, {download_dest: path}.merge(params))
|
90
90
|
end
|
91
91
|
|
92
92
|
# Downloads the file and returns as a String.
|
@@ -101,8 +101,8 @@ module GoogleDrive
|
|
101
101
|
# Downloads the file and writes it to +io+.
|
102
102
|
#
|
103
103
|
# To export the file in other formats, use export_to_io.
|
104
|
-
def download_to_io(io,
|
105
|
-
@session.drive.get_file(id, download_dest: io)
|
104
|
+
def download_to_io(io, params = {})
|
105
|
+
@session.drive.get_file(id, {download_dest: io}.merge(params))
|
106
106
|
end
|
107
107
|
|
108
108
|
# Export the file to +path+ in content type +format+.
|
data/lib/google_drive/session.rb
CHANGED
@@ -6,8 +6,6 @@ require 'stringio'
|
|
6
6
|
|
7
7
|
require 'rubygems'
|
8
8
|
require 'nokogiri'
|
9
|
-
require 'oauth'
|
10
|
-
require 'oauth2'
|
11
9
|
require 'googleauth'
|
12
10
|
|
13
11
|
require 'google_drive/util'
|
@@ -42,21 +40,18 @@ module GoogleDrive
|
|
42
40
|
if proxy
|
43
41
|
fail(
|
44
42
|
ArgumentError,
|
45
|
-
|
43
|
+
'Specifying a proxy object is no longer supported. Set ENV["http_proxy"] instead.')
|
46
44
|
end
|
47
45
|
|
48
46
|
if credentials_or_access_token
|
49
|
-
|
50
|
-
when String
|
47
|
+
if credentials_or_access_token.is_a?(String)
|
51
48
|
credentials = Google::Auth::UserRefreshCredentials.new(
|
52
49
|
access_token: credentials_or_access_token)
|
53
|
-
|
50
|
+
# Equivalent of credentials_or_access_token.is_a?(OAuth2::AccessToken),
|
51
|
+
# without adding dependency to "oauth2" library.
|
52
|
+
elsif credentials_or_access_token.class.ancestors.any?{ |m| m.name == 'OAuth2::AccessToken' }
|
54
53
|
credentials = Google::Auth::UserRefreshCredentials.new(
|
55
54
|
access_token: credentials_or_access_token.token)
|
56
|
-
when OAuth::AccessToken
|
57
|
-
fail(
|
58
|
-
ArgumentError,
|
59
|
-
'OAuth1 is no longer supported. Use OAuth2 instead.')
|
60
55
|
else
|
61
56
|
credentials = credentials_or_access_token
|
62
57
|
end
|
@@ -190,19 +185,28 @@ module GoogleDrive
|
|
190
185
|
end
|
191
186
|
|
192
187
|
# Returns GoogleDrive::Worksheet with given +url+.
|
193
|
-
# You must specify URL of cell-based feed of the worksheet.
|
188
|
+
# You must specify URL of either worksheet feed or cell-based feed of the worksheet.
|
194
189
|
#
|
195
|
-
# e.g
|
190
|
+
# e.g.:
|
191
|
+
# # Worksheet feed URL
|
192
|
+
# session.worksheet_by_url(
|
193
|
+
# "https://spreadsheets.google.com/feeds/worksheets/" +
|
194
|
+
# "1smypkyAz4STrKO4Zkos5Z4UPUJKvvgIza32LnlQ7OGw/private/full/od7")
|
195
|
+
# # Cell-based feed URL
|
196
196
|
# session.worksheet_by_url(
|
197
|
-
# "
|
198
|
-
# "
|
197
|
+
# "https://spreadsheets.google.com/feeds/cells/" +
|
198
|
+
# "1smypkyAz4STrKO4Zkos5Z4UPUJKvvgIza32LnlQ7OGw/od7/private/full")
|
199
199
|
def worksheet_by_url(url)
|
200
|
-
|
201
|
-
|
202
|
-
|
200
|
+
case url
|
201
|
+
when %r{^https?://spreadsheets.google.com/feeds/worksheets/.*/.*/full/.*$}
|
202
|
+
worksheet_feed_url = url
|
203
|
+
when %r{^https?://spreadsheets.google.com/feeds/cells/(.*)/(.*)/private/full((\?.*)?)$}
|
204
|
+
worksheet_feed_url = "https://spreadsheets.google.com/feeds/worksheets/" +
|
205
|
+
"#{Regexp.last_match(1)}/private/full/#{Regexp.last_match(2)}#{Regexp.last_match(3)}"
|
206
|
+
else
|
207
|
+
fail(GoogleDrive::Error, "URL is neither a worksheet feed URL nor a cell-based feed URL: #{url}")
|
203
208
|
end
|
204
|
-
|
205
|
-
"#{Regexp.last_match(1)}/private/full/#{Regexp.last_match(2)}#{Regexp.last_match(3)}"
|
209
|
+
|
206
210
|
worksheet_feed_entry = request(:get, worksheet_feed_url)
|
207
211
|
Worksheet.new(self, nil, worksheet_feed_entry)
|
208
212
|
end
|
@@ -310,7 +314,7 @@ module GoogleDrive
|
|
310
314
|
end
|
311
315
|
|
312
316
|
# Uploads a file. Reads content from +io+.
|
313
|
-
# Returns a
|
317
|
+
# Returns a GoogleDrive::File object.
|
314
318
|
def upload_from_io(io, title = 'Untitled', params = {})
|
315
319
|
upload_from_source(io, title, params)
|
316
320
|
end
|
@@ -328,16 +332,15 @@ module GoogleDrive
|
|
328
332
|
|
329
333
|
def execute_paged!(opts, &block) #:nodoc:
|
330
334
|
if block
|
331
|
-
|
332
335
|
page_token = nil
|
333
|
-
|
336
|
+
loop do
|
334
337
|
parameters = (opts[:parameters] || {}).merge({page_token: page_token})
|
335
338
|
(items, page_token) = execute_paged!(opts.merge(parameters: parameters))
|
336
339
|
items.each(&block)
|
337
|
-
|
340
|
+
break unless page_token
|
341
|
+
end
|
338
342
|
|
339
343
|
elsif opts[:parameters] && opts[:parameters].key?(:page_token)
|
340
|
-
|
341
344
|
response = opts[:method].call(opts[:parameters])
|
342
345
|
items = response.__send__(opts[:items_method_name]).map do |item|
|
343
346
|
opts[:converter] ? opts[:converter].call(item) : item
|
@@ -345,8 +348,8 @@ module GoogleDrive
|
|
345
348
|
return [items, response.next_page_token]
|
346
349
|
|
347
350
|
else
|
348
|
-
parameters
|
349
|
-
(items,
|
351
|
+
parameters = (opts[:parameters] || {}).merge({page_token: nil})
|
352
|
+
(items, _) = execute_paged!(opts.merge(parameters: parameters))
|
350
353
|
items
|
351
354
|
end
|
352
355
|
end
|
@@ -391,7 +394,7 @@ module GoogleDrive
|
|
391
394
|
fields: '*',
|
392
395
|
}
|
393
396
|
for k, v in params
|
394
|
-
if ![:convert, :convert_mime_type].include?(k)
|
397
|
+
if ![:convert, :convert_mime_type, :parents].include?(k)
|
395
398
|
api_params[k] = v
|
396
399
|
end
|
397
400
|
end
|
@@ -403,6 +406,9 @@ module GoogleDrive
|
|
403
406
|
elsif params.fetch(:convert, true) && IMPORTABLE_CONTENT_TYPE_MAP.key?(content_type)
|
404
407
|
file_metadata[:mime_type] = IMPORTABLE_CONTENT_TYPE_MAP[content_type]
|
405
408
|
end
|
409
|
+
if params[:parents]
|
410
|
+
file_metadata[:parents] = params[:parents]
|
411
|
+
end
|
406
412
|
|
407
413
|
file = self.drive.create_file(file_metadata, api_params)
|
408
414
|
wrap_api_file(file)
|
@@ -255,18 +255,16 @@ module GoogleDrive
|
|
255
255
|
|
256
256
|
# Shifts all cells below the row.
|
257
257
|
self.max_rows += rows.size
|
258
|
-
|
259
|
-
|
260
|
-
for c in 1..num_cols
|
258
|
+
num_rows.downto(row_num) do |r|
|
259
|
+
(1..num_cols).each do |c|
|
261
260
|
self[r + rows.size, c] = self[r, c]
|
262
261
|
end
|
263
|
-
r -= 1
|
264
262
|
end
|
265
263
|
|
266
264
|
# Fills in the inserted rows.
|
267
265
|
num_cols = self.num_cols
|
268
266
|
rows.each_with_index do |row, r|
|
269
|
-
|
267
|
+
(0...[row.size, num_cols].max).each do |c|
|
270
268
|
self[row_num + r, 1 + c] = row[c] || ''
|
271
269
|
end
|
272
270
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_drive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroshi Ichikawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -30,46 +30,6 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 2.0.0
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: oauth
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: 0.3.6
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 1.0.0
|
43
|
-
type: :runtime
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 0.3.6
|
50
|
-
- - "<"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 1.0.0
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: oauth2
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - ">="
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: 0.5.0
|
60
|
-
- - "<"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 2.0.0
|
63
|
-
type: :runtime
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 0.5.0
|
70
|
-
- - "<"
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 2.0.0
|
73
33
|
- !ruby/object:Gem::Dependency
|
74
34
|
name: google-api-client
|
75
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,12 +129,9 @@ email:
|
|
169
129
|
- gimite+github@gmail.com
|
170
130
|
executables: []
|
171
131
|
extensions: []
|
172
|
-
extra_rdoc_files:
|
173
|
-
- README.rdoc
|
174
|
-
- doc_src/google_drive/acl.rb
|
132
|
+
extra_rdoc_files: []
|
175
133
|
files:
|
176
|
-
- README.
|
177
|
-
- doc_src/google_drive/acl.rb
|
134
|
+
- README.md
|
178
135
|
- lib/google_drive.rb
|
179
136
|
- lib/google_drive/acl.rb
|
180
137
|
- lib/google_drive/acl_entry.rb
|
@@ -196,9 +153,7 @@ licenses:
|
|
196
153
|
- BSD-3-Clause
|
197
154
|
metadata: {}
|
198
155
|
post_install_message:
|
199
|
-
rdoc_options:
|
200
|
-
- "--main"
|
201
|
-
- README.rdoc
|
156
|
+
rdoc_options: []
|
202
157
|
require_paths:
|
203
158
|
- lib
|
204
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
data/README.rdoc
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
This is a Ruby library to read/write files/spreadsheets in Google Drive/Docs.
|
2
|
-
|
3
|
-
NOTE: This is NOT a library to create Google Drive App.
|
4
|
-
|
5
|
-
|
6
|
-
= Migration from ver. 0.x.x / 1.x.x to to ver. 2.x.x
|
7
|
-
|
8
|
-
There are some incompatible API changes. See {MIGRATING.md}[https://github.com/gimite/google-drive-ruby/blob/master/MIGRATING.md].
|
9
|
-
|
10
|
-
|
11
|
-
= How to install
|
12
|
-
|
13
|
-
$ sudo gem install google_drive
|
14
|
-
|
15
|
-
|
16
|
-
= How to use
|
17
|
-
|
18
|
-
First, follow Step 1 and 2 of "Authorizing requests with OAuth 2.0" in {this page}[https://developers.google.com/drive/v3/web/about-auth] to get a client ID and client secret for OAuth. Set "Application type" to "Other" in the form to create a client ID if you use GoogleDrive.saved_session method as in the example below.
|
19
|
-
|
20
|
-
Next, create a file config.json which contains the client ID and crient secret you got above, which looks like:
|
21
|
-
|
22
|
-
{
|
23
|
-
"client_id": "xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
|
24
|
-
"client_secret": "xxxxxxxxxxxxxxxxxxxxxxxx"
|
25
|
-
}
|
26
|
-
|
27
|
-
Example to read/write files in Google Drive:
|
28
|
-
|
29
|
-
require "google_drive"
|
30
|
-
|
31
|
-
# Creates a session. This will prompt the credential via command line for the
|
32
|
-
# first time and save it to config.json file for later usages.
|
33
|
-
session = GoogleDrive.saved_session("config.json")
|
34
|
-
|
35
|
-
# Gets list of remote files.
|
36
|
-
session.files.each do |file|
|
37
|
-
p file.title
|
38
|
-
end
|
39
|
-
|
40
|
-
# Uploads a local file.
|
41
|
-
session.upload_from_file("/path/to/hello.txt", "hello.txt", convert: false)
|
42
|
-
|
43
|
-
# Downloads to a local file.
|
44
|
-
file = session.file_by_title("hello.txt")
|
45
|
-
file.download_to_file("/path/to/hello.txt")
|
46
|
-
|
47
|
-
# Updates content of the remote file.
|
48
|
-
file.update_from_file("/path/to/hello.txt")
|
49
|
-
|
50
|
-
Example to read/write spreadsheets:
|
51
|
-
|
52
|
-
require "google_drive"
|
53
|
-
|
54
|
-
# Creates a session. This will prompt the credential via command line for the
|
55
|
-
# first time and save it to config.json file for later usages.
|
56
|
-
session = GoogleDrive.saved_session("config.json")
|
57
|
-
|
58
|
-
# First worksheet of
|
59
|
-
# https://docs.google.com/spreadsheet/ccc?key=pz7XtlQC-PYx-jrVMJErTcg
|
60
|
-
# Or https://docs.google.com/a/someone.com/spreadsheets/d/pz7XtlQC-PYx-jrVMJErTcg/edit?usp=drive_web
|
61
|
-
ws = session.spreadsheet_by_key("pz7XtlQC-PYx-jrVMJErTcg").worksheets[0]
|
62
|
-
|
63
|
-
# Gets content of A2 cell.
|
64
|
-
p ws[2, 1] #==> "hoge"
|
65
|
-
|
66
|
-
# Changes content of cells.
|
67
|
-
# Changes are not sent to the server until you call ws.save().
|
68
|
-
ws[2, 1] = "foo"
|
69
|
-
ws[2, 2] = "bar"
|
70
|
-
ws.save
|
71
|
-
|
72
|
-
# Dumps all cells.
|
73
|
-
(1..ws.num_rows).each do |row|
|
74
|
-
(1..ws.num_cols).each do |col|
|
75
|
-
p ws[row, col]
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
# Yet another way to do so.
|
80
|
-
p ws.rows #==> [["fuga", ""], ["foo", "bar]]
|
81
|
-
|
82
|
-
# Reloads the worksheet to get changes by other clients.
|
83
|
-
ws.reload
|
84
|
-
|
85
|
-
API document: http://www.rubydoc.info/gems/google_drive
|
86
|
-
|
87
|
-
= Source code
|
88
|
-
|
89
|
-
http://github.com/gimite/google-drive-ruby
|
90
|
-
|
91
|
-
The license of this source is "New BSD Licence"
|
92
|
-
|
93
|
-
|
94
|
-
= Supported environments
|
95
|
-
|
96
|
-
Ruby 2.0.0 or later. Checked with Ruby 2.3.0.
|
97
|
-
|
98
|
-
|
99
|
-
= Author
|
100
|
-
|
101
|
-
Hiroshi Ichikawa - http://gimite.net/en/index.php?Contact
|
data/doc_src/google_drive/acl.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module GoogleDrive
|
2
|
-
class Acl
|
3
|
-
# Returns the number of entries.
|
4
|
-
def size
|
5
|
-
end
|
6
|
-
|
7
|
-
# Returns GoogleDrive::AclEntry object at +index+.
|
8
|
-
def [](index)
|
9
|
-
end
|
10
|
-
|
11
|
-
# Iterates over GoogleDrive::AclEntry objects.
|
12
|
-
def each(&_block)
|
13
|
-
yield(entry)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|