google_spreadsheet_fetcher 1.1.0 → 1.6.0
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
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 484a5652add269569653176f0362c21e7490a90e7207cef09fc0b9337514ac9e
|
|
4
|
+
data.tar.gz: 5c506fdb046946b261e345e82f26c2c07eb9bd4ef4f55f1fd0936376c7404f0b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 79a4a84c92f1405e04482804c93d8746616aac842ecc4151332ac4a6f10a8e9ffbde8a41e1792e875bc4f9fcd712153afa136ec50695fa208332108a007ef759
|
|
7
|
+
data.tar.gz: c82292382ef20832fd6ec8ccd6b686c677d2aaec9afabc86e96a0023a4be8243ddd3f7bf06d28c5abc40e8142f1d50de060e52a3f009fae26ed40998dfe61bda
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
require 'google/apis/sheets_v4'
|
|
1
2
|
require 'googleauth'
|
|
2
3
|
require 'googleauth/stores/file_token_store'
|
|
3
|
-
require "google/apis/sheets_v4"
|
|
4
4
|
require 'shellwords'
|
|
5
5
|
|
|
6
6
|
module GoogleSpreadsheetFetcher
|
|
@@ -18,27 +18,9 @@ module GoogleSpreadsheetFetcher
|
|
|
18
18
|
@application_name = application_name
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
# @param [String] range(https://developers.google.com/sheets/api/guides/concepts#a1_notation)
|
|
22
|
-
# @param [Integer] skip
|
|
23
|
-
def fetch_all_rows(range, skip: 0, structured: false)
|
|
24
|
-
rows = service.batch_get_spreadsheet_values(@spreadsheet_id, ranges: [range])&.value_ranges&.first&.values
|
|
25
|
-
return [] if rows.blank?
|
|
26
|
-
|
|
27
|
-
if structured
|
|
28
|
-
headers = rows.delete_at(0)
|
|
29
|
-
rows.slice!(0, skip)
|
|
30
|
-
rows.map { |r| [headers, r].transpose.to_h }
|
|
31
|
-
else
|
|
32
|
-
rows.slice!(0, skip)
|
|
33
|
-
rows
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
21
|
def fetch_all_rows_by!(index: nil, sheet_id: nil, title: nil, skip: 0, structured: false)
|
|
38
22
|
sheet = fetch_sheet_by!(index: index, sheet_id: sheet_id, title: title)
|
|
39
|
-
|
|
40
|
-
range = "#{sheet.properties.title}!A:Z"
|
|
41
|
-
fetch_all_rows(range, skip: skip, structured: structured)
|
|
23
|
+
fetch_all_rows(sheet, skip: skip, structured: structured)
|
|
42
24
|
end
|
|
43
25
|
|
|
44
26
|
def service
|
|
@@ -50,13 +32,41 @@ module GoogleSpreadsheetFetcher
|
|
|
50
32
|
|
|
51
33
|
private
|
|
52
34
|
|
|
35
|
+
# @param [Google::Apis::SheetsV4::Sheet] sheet
|
|
36
|
+
# @param [Integer] skip
|
|
37
|
+
# @param [Boolean] structured
|
|
38
|
+
def fetch_all_rows(sheet, skip: 0, structured: false)
|
|
39
|
+
# https://developers.google.com/sheets/api/guides/concepts#a1_notation
|
|
40
|
+
range = "#{sheet.properties.title}!A:ZZ"
|
|
41
|
+
rows = service.get_spreadsheet_values(@spreadsheet_id, range)&.values
|
|
42
|
+
return [] if rows.blank?
|
|
43
|
+
|
|
44
|
+
headers = rows.first
|
|
45
|
+
count = headers.count
|
|
46
|
+
|
|
47
|
+
if structured
|
|
48
|
+
rows.delete_at(0)
|
|
49
|
+
rows.slice!(0, skip)
|
|
50
|
+
rows.map { |r| headers.zip(r).to_h }
|
|
51
|
+
else
|
|
52
|
+
rows.slice!(0, skip)
|
|
53
|
+
rows.map { |r| fill_array(r, count) }
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
53
57
|
def fetch_sheet_by!(index: nil, sheet_id: nil, title: nil)
|
|
54
58
|
sheets = spreadsheet.sheets
|
|
55
59
|
raise SheetNotFound if sheets.blank?
|
|
56
60
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
sheet = if index.present?
|
|
62
|
+
sheets[index]
|
|
63
|
+
elsif sheet_id.present?
|
|
64
|
+
sheets.find { |s| s.properties.sheet_id == sheet_id }
|
|
65
|
+
elsif title.present?
|
|
66
|
+
sheets.find { |s| s.properties.title == title }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
return sheet if sheet.present?
|
|
60
70
|
|
|
61
71
|
raise SheetNotFound
|
|
62
72
|
end
|
|
@@ -78,7 +88,11 @@ module GoogleSpreadsheetFetcher
|
|
|
78
88
|
end
|
|
79
89
|
|
|
80
90
|
def spreadsheet
|
|
81
|
-
service.get_spreadsheet(@spreadsheet_id)
|
|
91
|
+
@spreadsheet ||= service.get_spreadsheet(@spreadsheet_id)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def fill_array(items, count, fill: "")
|
|
95
|
+
items + (count - items.count).times.map { fill }
|
|
82
96
|
end
|
|
83
97
|
end
|
|
84
98
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: google_spreadsheet_fetcher
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Takahiro Ooishi
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-06-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: google-api-client
|
|
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
119
119
|
- !ruby/object:Gem::Version
|
|
120
120
|
version: '0'
|
|
121
121
|
requirements: []
|
|
122
|
-
rubygems_version: 3.
|
|
122
|
+
rubygems_version: 3.1.2
|
|
123
123
|
signing_key:
|
|
124
124
|
specification_version: 4
|
|
125
125
|
summary: Google Spreadsheet fetcher
|