google_drive 3.0.2 → 3.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f2865f6f60afd35f662963e20dc007435b2423e7
4
- data.tar.gz: '0188065da34b278318d377920761293e8dd136a6'
2
+ SHA256:
3
+ metadata.gz: 8579ea758131c51c083928052abf518b1f327b9b9666e798c17007801f0c1476
4
+ data.tar.gz: c04c47fe2d0337bb2e471227ad66e90b857b33784f01f8d60d7406f63fcad92b
5
5
  SHA512:
6
- metadata.gz: e80dc181f7403c13789cc232383de52746f0ebbf080dfa9d218c2d58d018e9682ee7afffbde8dafe50ab13e82d8d03aa6862a590580782200f9afce5899d4585
7
- data.tar.gz: 2d966006bf5b7176c62d23d7fc89adc206ede7ed5597e4886df9b2f719a2813e3f433b08c24e58c20bf504a3ff2f3f7954de72e2237ba4b7fcf761da4130e022
6
+ metadata.gz: d52bac1e4e05bd2dee4503a67a4c9da7eaeee700dfa9bca2f668bc88c04df065b5a7c209a4808d98a63610cb27318df3bef859e6e016ba4fbe1029782440aa58
7
+ data.tar.gz: 24facac6a6116210ea76b82f139fcd5c93e5624fbdb889f2fb89de65c98a6eb11ae31fb0c892cb221a5b689e2fc5271bb6636ad1215559e2689a8ef9b5edbf85
@@ -22,7 +22,7 @@ module GoogleDrive
22
22
  @session = session
23
23
  @file = file
24
24
  api_permissions = @session.drive_service.list_permissions(
25
- @file.id, fields: '*', supports_team_drives: true
25
+ @file.id, fields: '*', supports_all_drives: true
26
26
  )
27
27
  @entries =
28
28
  api_permissions.permissions.map { |perm| AclEntry.new(perm, self) }
@@ -73,7 +73,7 @@ module GoogleDrive
73
73
  api_permission = @session.drive_service.create_permission(
74
74
  @file.id,
75
75
  entry.params,
76
- { fields: '*', supports_team_drives: true }.merge(options)
76
+ **{ fields: '*', supports_all_drives: true }.merge(options)
77
77
  )
78
78
  new_entry = AclEntry.new(api_permission, self)
79
79
  @entries.push(new_entry)
@@ -86,7 +86,7 @@ module GoogleDrive
86
86
  # spreadsheet.acl.delete(spreadsheet.acl[1])
87
87
  def delete(entry)
88
88
  @session.drive_service.delete_permission(
89
- @file.id, entry.id, supports_team_drives: true
89
+ @file.id, entry.id, supports_all_drives: true
90
90
  )
91
91
  @entries.delete(entry)
92
92
  end
@@ -98,7 +98,7 @@ module GoogleDrive
98
98
  entry.id,
99
99
  { role: entry.role },
100
100
  fields: '*',
101
- supports_team_drives: true
101
+ supports_all_drives: true
102
102
  )
103
103
  entry.api_permission = api_permission
104
104
  entry
@@ -20,7 +20,7 @@ module GoogleDrive
20
20
  # Adds the given GoogleDrive::File to the folder.
21
21
  def add(file)
22
22
  @session.drive_service.update_file(
23
- file.id, add_parents: id, fields: '', supports_team_drives: true
23
+ file.id, add_parents: id, fields: '', supports_all_drives: true
24
24
  )
25
25
  nil
26
26
  end
@@ -28,7 +28,7 @@ module GoogleDrive
28
28
  # Removes the given GoogleDrive::File from the folder.
29
29
  def remove(file)
30
30
  @session.drive_service.update_file(
31
- file.id, remove_parents: id, fields: '', supports_team_drives: true
31
+ file.id, remove_parents: id, fields: '', supports_all_drives: true
32
32
  )
33
33
  end
34
34
 
@@ -62,7 +62,7 @@ module GoogleDrive
62
62
  }.merge(file_properties)
63
63
 
64
64
  file = @session.drive_service.create_file(
65
- file_metadata, fields: '*', supports_team_drives: true
65
+ file_metadata, fields: '*', supports_all_drives: true
66
66
  )
67
67
 
68
68
  @session.wrap_api_file(file)
@@ -39,7 +39,7 @@ module GoogleDrive
39
39
  # Reloads file metadata such as title and acl.
40
40
  def reload_metadata
41
41
  @api_file = @session.drive_service.get_file(
42
- id, fields: '*', supports_team_drives: true
42
+ id, fields: '*', supports_all_drives: true
43
43
  )
44
44
  @acl = Acl.new(@session, self) if @acl
45
45
  end
@@ -96,7 +96,7 @@ module GoogleDrive
96
96
  def download_to_file(path, params = {})
97
97
  @session.drive_service.get_file(
98
98
  id,
99
- { download_dest: path, supports_team_drives: true }.merge(params)
99
+ { download_dest: path, supports_all_drives: true }.merge(params)
100
100
  )
101
101
  end
102
102
 
@@ -115,7 +115,7 @@ module GoogleDrive
115
115
  def download_to_io(io, params = {})
116
116
  @session.drive_service.get_file(
117
117
  id,
118
- { download_dest: io, supports_team_drives: true }.merge(params)
118
+ **{ download_dest: io, supports_all_drives: true }.merge(params)
119
119
  )
120
120
  end
121
121
 
@@ -184,8 +184,8 @@ module GoogleDrive
184
184
 
185
185
  # Reads content from +io+ and updates the file with the content.
186
186
  def update_from_io(io, params = {})
187
- params = { upload_source: io, supports_team_drives: true }.merge(params)
188
- @session.drive_service.update_file(id, nil, params)
187
+ params = { upload_source: io, supports_all_drives: true }.merge(params)
188
+ @session.drive_service.update_file(id, nil, **params)
189
189
  nil
190
190
  end
191
191
 
@@ -193,10 +193,10 @@ module GoogleDrive
193
193
  # If +permanent+ is +true+, deletes the file permanently.
194
194
  def delete(permanent = false)
195
195
  if permanent
196
- @session.drive_service.delete_file(id, supports_team_drives: true)
196
+ @session.drive_service.delete_file(id, supports_all_drives: true)
197
197
  else
198
198
  @session.drive_service.update_file(
199
- id, { trashed: true }, supports_team_drives: true
199
+ id, { trashed: true }, supports_all_drives: true
200
200
  )
201
201
  end
202
202
  nil
@@ -205,7 +205,7 @@ module GoogleDrive
205
205
  # Renames title of the file.
206
206
  def rename(title)
207
207
  @session.drive_service.update_file(
208
- id, { name: title }, supports_team_drives: true
208
+ id, { name: title }, supports_all_drives: true
209
209
  )
210
210
  nil
211
211
  end
@@ -215,7 +215,7 @@ module GoogleDrive
215
215
  # Creates copy of this file with the given title.
216
216
  def copy(title, file_properties = {})
217
217
  api_file = @session.drive_service.copy_file(
218
- id, { name: title }.merge(file_properties), fields: '*', supports_team_drives: true
218
+ id, { name: title }.merge(file_properties), fields: '*', supports_all_drives: true
219
219
  )
220
220
  @session.wrap_api_file(api_file)
221
221
  end
@@ -141,15 +141,13 @@ module GoogleDrive
141
141
  config.client_id = options[:client_id]
142
142
  config.client_secret = options[:client_secret]
143
143
  end
144
- if !config.client_id && !config.client_secret
145
- config.client_id =
146
- '452925651630-egr1f18o96acjjvphpbbd1qlsevkho1d.' \
147
- 'apps.googleusercontent.com'
148
- config.client_secret = '1U3-Krii5x1oLPrwD5zgn-ry'
149
- elsif !config.client_id || !config.client_secret
144
+ if !config.client_id || !config.client_secret
150
145
  raise(
151
146
  ArgumentError,
152
- 'client_id and client_secret must be both specified or both omitted'
147
+ 'client_id or client_secret is missing in the config. Follow ' \
148
+ 'https://github.com/gimite/google-drive-ruby/blob/master/doc/authorization.md ' \
149
+ 'to provide a valid config. google_drive library no longer provides ' \
150
+ 'the default credential due to a limitation of Google API.'
153
151
  )
154
152
  end
155
153
 
@@ -255,7 +253,7 @@ module GoogleDrive
255
253
  params = convert_params(params)
256
254
  execute_paged!(
257
255
  method: drive_service.method(:list_files),
258
- parameters: { fields: '*', supports_team_drives: true }.merge(params),
256
+ parameters: { fields: '*', supports_all_drives: true, include_items_from_all_drives: true }.merge(params),
259
257
  items_method_name: :files,
260
258
  converter: proc { |af| wrap_api_file(af) },
261
259
  &block
@@ -287,7 +285,7 @@ module GoogleDrive
287
285
  # Returns an instance of GoogleDrive::File or its subclass
288
286
  # (GoogleDrive::Spreadsheet, GoogleDrive::Collection).
289
287
  def file_by_id(id)
290
- api_file = drive_service.get_file(id, fields: '*', supports_team_drives: true)
288
+ api_file = drive_service.get_file(id, fields: '*', supports_all_drives: true)
291
289
  wrap_api_file(api_file)
292
290
  end
293
291
 
@@ -510,7 +508,7 @@ module GoogleDrive
510
508
  }.merge(file_properties)
511
509
 
512
510
  file = drive_service.create_file(
513
- file_metadata, fields: '*', supports_team_drives: true
511
+ file_metadata, fields: '*', supports_all_drives: true
514
512
  )
515
513
 
516
514
  wrap_api_file(file)
@@ -600,7 +598,7 @@ module GoogleDrive
600
598
  end
601
599
 
602
600
  elsif opts[:parameters] && opts[:parameters].key?(:page_token)
603
- response = opts[:method].call(opts[:parameters])
601
+ response = opts[:method].call(**opts[:parameters])
604
602
  items = response.__send__(opts[:items_method_name]).map do |item|
605
603
  opts[:converter] ? opts[:converter].call(item) : item
606
604
  end
@@ -656,7 +654,7 @@ module GoogleDrive
656
654
  upload_source: source,
657
655
  content_type: 'application/octet-stream',
658
656
  fields: '*',
659
- supports_team_drives: true
657
+ supports_all_drives: true
660
658
  }
661
659
  for k, v in params
662
660
  unless %i[convert convert_mime_type parents].include?(k)
@@ -674,7 +672,7 @@ module GoogleDrive
674
672
  end
675
673
  file_metadata[:parents] = params[:parents] if params[:parents]
676
674
 
677
- file = drive_service.create_file(file_metadata, api_params)
675
+ file = drive_service.create_file(file_metadata, **api_params)
678
676
  wrap_api_file(file)
679
677
  end
680
678
 
@@ -50,7 +50,7 @@ module GoogleDrive
50
50
  # @api private
51
51
  # A regexp which matches an invalid character in XML 1.0:
52
52
  # https://en.wikipedia.org/wiki/Valid_characters_in_XML#XML_1.0
53
- XML_INVAILD_CHAR_REGEXP =
53
+ XML_INVALID_CHAR_REGEXP =
54
54
  /[^\u0009\u000a\u000d\u0020-\ud7ff\ue000-\ufffd\u{10000}-\u{10ffff}]/
55
55
 
56
56
  # @api private
@@ -73,13 +73,16 @@ module GoogleDrive
73
73
  def worksheet_feed_entry
74
74
  @worksheet_feed_entry ||= @session.request(:get, worksheet_feed_url).root
75
75
  end
76
-
76
+
77
77
  # Google::Apis::SheetsV4::SheetProperties object for this worksheet.
78
78
  attr_reader :properties
79
79
 
80
80
  # Title of the worksheet (shown as tab label in Web interface).
81
81
  attr_reader :title
82
82
 
83
+ # Index of the worksheet (affects tab order in web interface).
84
+ attr_reader :index
85
+
83
86
  # GoogleDrive::Spreadsheet which this worksheet belongs to.
84
87
  attr_reader :spreadsheet
85
88
 
@@ -139,6 +142,24 @@ module GoogleDrive
139
142
  format("%s\#gid=%s", spreadsheet.human_url, gid)
140
143
  end
141
144
 
145
+ # Copy worksheet to specified spreadsheet.
146
+ # This method can take either instance of GoogleDrive::Spreadsheet or its id.
147
+ def copy_to(spreadsheet_or_id)
148
+ destination_spreadsheet_id =
149
+ spreadsheet_or_id.respond_to?(:id) ?
150
+ spreadsheet_or_id.id : spreadsheet_or_id
151
+ request = Google::Apis::SheetsV4::CopySheetToAnotherSpreadsheetRequest.new(
152
+ destination_spreadsheet_id: destination_spreadsheet_id,
153
+ )
154
+ @session.sheets_service.copy_spreadsheet(spreadsheet.id, sheet_id, request)
155
+ nil
156
+ end
157
+
158
+ # Copy worksheet to owner spreadsheet.
159
+ def duplicate
160
+ copy_to(spreadsheet)
161
+ end
162
+
142
163
  # Returns content of the cell as String. Arguments must be either
143
164
  # (row number, column number) or cell name. Top-left cell is [1, 1].
144
165
  #
@@ -280,6 +301,13 @@ module GoogleDrive
280
301
  @meta_modified = true
281
302
  end
282
303
 
304
+ # Updates index of the worksheet.
305
+ # Note that update is not sent to the server until you call save().
306
+ def index=(index)
307
+ @index = index
308
+ @meta_modified = true
309
+ end
310
+
283
311
  # @api private
284
312
  def cells
285
313
  reload_cells unless @cells
@@ -380,6 +408,7 @@ module GoogleDrive
380
408
  properties: {
381
409
  sheet_id: sheet_id,
382
410
  title: title,
411
+ index: index,
383
412
  grid_properties: {row_count: max_rows, column_count: max_cols},
384
413
  },
385
414
  fields: '*',
@@ -392,7 +421,7 @@ module GoogleDrive
392
421
  @v4_requests = []
393
422
  sent = true
394
423
  end
395
-
424
+
396
425
  @remote_title = @title
397
426
 
398
427
  unless @modified.empty?
@@ -406,7 +435,7 @@ module GoogleDrive
406
435
  min_modified_col = c if c < min_modified_col
407
436
  max_modified_col = c if c > max_modified_col
408
437
  end
409
-
438
+
410
439
  # Uses update_spreadsheet_value instead batch_update_spreadsheet with
411
440
  # update_cells. batch_update_spreadsheet has benefit that the request
412
441
  # can be batched with other requests. But it has drawback that the
@@ -570,8 +599,8 @@ module GoogleDrive
570
599
  # A1 to have red text that is bold and italic:
571
600
  # worksheet.set_text_format(
572
601
  # 1, 1, 1, 1,
573
- # bold: true,
574
- # italic: true,
602
+ # bold: true,
603
+ # italic: true,
575
604
  # foreground_color: GoogleDrive::Worksheet::Colors::RED_BERRY)
576
605
  #
577
606
  # foreground_color is an instance of Google::Apis::SheetsV4::Color.
@@ -638,6 +667,7 @@ module GoogleDrive
638
667
  def set_properties(properties)
639
668
  @properties = properties
640
669
  @title = @remote_title = properties.title
670
+ @index = properties.index
641
671
  if properties.grid_properties.nil?
642
672
  @max_rows = @max_cols = 0
643
673
  else
@@ -673,7 +703,7 @@ module GoogleDrive
673
703
  k = [r + 1, c + 1]
674
704
  @cells[k] = cell_data.formatted_value || ''
675
705
  @input_values[k] = extended_value_to_str(cell_data.user_entered_value)
676
- @numeric_values[k] =
706
+ @numeric_values[k] =
677
707
  cell_data.effective_value && cell_data.effective_value.number_value ?
678
708
  cell_data.effective_value.number_value.to_f : nil
679
709
  end
@@ -709,7 +739,7 @@ module GoogleDrive
709
739
  end
710
740
 
711
741
  def validate_cell_value(value)
712
- if value =~ XML_INVAILD_CHAR_REGEXP
742
+ if value =~ XML_INVALID_CHAR_REGEXP
713
743
  raise(
714
744
  ArgumentError,
715
745
  format('Contains invalid character %p for XML 1.0: %p', $&, value)
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: 3.0.2
4
+ version: 3.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Ichikawa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-06 00:00:00.000000000 Z
11
+ date: 2021-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -31,25 +31,45 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.0.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: google-api-client
34
+ name: google-apis-drive_v3
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 0.11.0
39
+ version: 0.5.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: 0.29.0
42
+ version: 1.0.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.11.0
49
+ version: 0.5.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: 1.0.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: google-apis-sheets_v4
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.4.0
50
60
  - - "<"
51
61
  - !ruby/object:Gem::Version
52
- version: 0.29.0
62
+ version: 1.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.4.0
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: 1.0.0
53
73
  - !ruby/object:Gem::Dependency
54
74
  name: googleauth
55
75
  requirement: !ruby/object:Gem::Requirement
@@ -168,8 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
188
  - !ruby/object:Gem::Version
169
189
  version: '0'
170
190
  requirements: []
171
- rubyforge_project:
172
- rubygems_version: 2.6.14
191
+ rubygems_version: 3.2.3
173
192
  signing_key:
174
193
  specification_version: 4
175
194
  summary: A library to read/write files/spreadsheets in Google Drive/Docs.