applocale 0.4.1 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 90d475e1b157e47cb575c5443db8d9ea89c446e2
4
- data.tar.gz: 612fc5ae3867aa0faa3296bc2b5930660bac8813
3
+ metadata.gz: d0b2379061e419ebd39b78bcff31a60598ef063f
4
+ data.tar.gz: 83523c243bfba37160fd902940a89338ff3318ce
5
5
  SHA512:
6
- metadata.gz: a7ad7d4a77d846df74f9573364fa3dcb60745e23f8aeb754248f5caf5c611a2bc0655f622ec27539f12afb7c07f12ced29c8a940698352ac911f5bd057fa806a
7
- data.tar.gz: a04e3d8e3d7134092f3f998691b38e9bfacb4f554bf43aacffa70fe874680ed8b12332519f7655afaae7d7187821021290c45b61635efe40c9f445fa67712d00
6
+ metadata.gz: bf7f2cac8b836a140ec030d7c701c92de0b66f313ccbb3d563524901cf41710f5856954a7477788f4b112f5d48f842f7ffeb44304920a58b93e9be91c6b393b9
7
+ data.tar.gz: 3f0d2b1f7879d12082c787a204e9b65fa8f5cfdc990641f686a4afb65b4e90849ee512802d3526e25393e1fab2bf11c46f46c3775dc64efd2ebcd10b78d50d32
@@ -1,4 +1,5 @@
1
1
  require 'google/apis/drive_v3'
2
+ require 'google/apis/sheets_v4'
2
3
  require 'googleauth'
3
4
  require 'googleauth/stores/file_token_store'
4
5
  require 'fileutils'
@@ -46,13 +47,45 @@ module Applocale
46
47
  authorization = authorize
47
48
  begin
48
49
  case export_format
49
- when 'csv'
50
- sheet_obj_list.each do |sheet_obj|
50
+ when 'csv'
51
+ service = Google::Apis::SheetsV4::SheetsService.new
52
+ service.client_options.application_name = APPLICATION_NAME
53
+ service.authorization = authorization
54
+ sheets = service.get_spreadsheet(self.spreadsheet_id).sheets
55
+ sheetMap = {}
56
+ sheets.each do |sheet|
57
+ sheetMap[sheet.properties.title.to_s] = sheet.properties.sheet_id
58
+ end
59
+
60
+ index = 0
61
+ sheet_obj_list.each do |sheet_obj|
51
62
  sheet_name = sheet_obj.sheetname
52
63
  file_path = File.expand_path("#{sheet_name}.csv", export_to)
53
- csv = open("https://docs.google.com/spreadsheets/d/#{self.spreadsheet_id}/gviz/tq?tqx=out:csv&sheet=#{sheet_name}&access_token=#{authorization.access_token}")
54
- IO.copy_stream(csv, file_path)
55
- end
64
+ if sheetMap[sheet_name].nil?
65
+ ErrorUtil::SheetNotExist.new(sheet_name).raise
66
+ end
67
+ puts "to download sheet: #{sheet_name}"
68
+ if !sheet_obj.obj.use_export
69
+ link = "https://docs.google.com/spreadsheets/d/1kapxktmMI605BhStCNd6F4Hst1A3HuNEfA4945_Mqa0/gviz/tq?tqx=out:csv&sheet=#{sheet_name}&access_token=#{authorization.access_token}"
70
+ puts "https://docs.google.com/spreadsheets/d/1kapxktmMI605BhStCNd6F4Hst1A3HuNEfA4945_Mqa0/gviz/tq?tqx=out:csv&sheet=#{sheet_name}&access_token=xxxxx"
71
+ csv = open(link)
72
+ IO.copy_stream(csv, file_path)
73
+ else
74
+ if index % 3 == 0
75
+ puts "please wait ... "
76
+ sleep(5)
77
+ else
78
+ puts "please wait .. "
79
+ sleep(2)
80
+ end
81
+ link = "https://docs.google.com/spreadsheets/d/1kapxktmMI605BhStCNd6F4Hst1A3HuNEfA4945_Mqa0/export?format=csv&gid=#{sheetMap[sheet_name]}&access_token=#{authorization.access_token}"
82
+ puts "https://docs.google.com/spreadsheets/d/1kapxktmMI605BhStCNd6F4Hst1A3HuNEfA4945_Mqa0/export?format=csv&gid=#{sheetMap[sheet_name]}&access_token=xxxxx"
83
+ File.open(file_path, "wb") do |file|
84
+ file.write open(link).read
85
+ end
86
+ index = index + 1
87
+ end
88
+ end
56
89
  when 'xlsx'
57
90
  service = Google::Apis::DriveV3::DriveService.new
58
91
  service.client_options.application_name = APPLICATION_NAME
@@ -47,6 +47,7 @@ module Applocale
47
47
  next
48
48
  end
49
49
  rows = CSV.read(csv_path)
50
+
50
51
  header = find_header(sheet_obj, rows)
51
52
  sheet_content.header_rowno = header[:header_row_index]
52
53
  sheet_content.keyStr_with_colno = header[:key_header_info]
@@ -84,19 +85,30 @@ module Applocale
84
85
  sheet_language_list = sheet_info_obj.lang_headers
85
86
  sheet_key_header = sheet_info_obj.key_header
86
87
 
87
- header_row_index = rows.index do |row|
88
- row.include?(sheet_key_header)
89
- end
88
+ header_row_index = nil
89
+
90
+ rows.each_with_index {|row,index |
91
+ row.each do |rowValue|
92
+ if rowValue.to_s.strip == sheet_key_header.to_s
93
+ header_row_index = index
94
+ break
95
+ end
96
+ break if !header_row_index.nil?
97
+ end
98
+ }
90
99
 
91
100
  header_row_info = rows[header_row_index] unless header_row_index.nil?
92
- header_column_index = header_row_info.index { |cell| cell == sheet_key_header }
101
+ if header_row_info.nil?
102
+ raise "ParseCSVError: Header not found in sheet: #{sheet_name}"
103
+ end
104
+ header_column_index = header_row_info.index { |cell| cell.to_s.strip == sheet_key_header }
93
105
  if header_row_index.nil? || header_column_index.nil?
94
106
  raise "ParseCSVError: Header not found in sheet #{sheet_name}"
95
107
  end
96
108
  key_header_info = ParseModelModule::KeyStrWithColNo.new(sheet_key_header, header_column_index)
97
109
 
98
110
  language_header_list = sheet_language_list.map do |key, value|
99
- cell_index = header_row_info.index { |cell| cell == value }
111
+ cell_index = header_row_info.index { |cell| cell.to_s.strip == value }
100
112
  cell_index.nil? ? nil : ParseModelModule::LangWithColNo.new(value, key, cell_index)
101
113
  end.compact
102
114
  unless language_header_list.length == sheet_language_list.length
@@ -97,29 +97,31 @@ module Applocale
97
97
  end
98
98
 
99
99
  class SheetInfoByHeader
100
- attr_accessor :key_header, :lang_headers
100
+ attr_accessor :key_header, :lang_headers, :use_export
101
101
 
102
- def initialize(key_header, lang_headers)
102
+ def initialize(key_header, lang_headers, use_export)
103
103
  self.key_header = key_header
104
104
  self.lang_headers = lang_headers
105
+ self.use_export = use_export
105
106
  end
106
107
 
107
108
  def to_s
108
- return "key_header: #{self.key_header} | headers: #{self.lang_headers.to_s}"
109
+ return "key_header: #{self.key_header} | headers: #{self.lang_headers.to_s} | use_export: #{self.use_export}"
109
110
  end
110
111
  end
111
112
 
112
113
  class SheetInfoByRow
113
- attr_accessor :row, :key_col, :lang_cols
114
+ attr_accessor :row, :key_col, :lang_cols, :use_export
114
115
 
115
- def initialize(row, key_col, lang_cols)
116
+ def initialize(row, key_col, lang_cols, use_export)
116
117
  self.row = row
117
118
  self.key_col = key_col
118
119
  self.lang_cols = lang_cols
120
+ self.use_export = use_export
119
121
  end
120
122
 
121
123
  def to_s
122
- return "row: #{self.row} | key_col: #{self.key_col} | lang_cols: #{self.lang_cols.to_s}"
124
+ return "row: #{self.row} | key_col: #{self.key_col} | lang_cols: #{self.lang_cols.to_s} | use_export: #{self.use_export}"
123
125
  end
124
126
  end
125
127
 
@@ -201,12 +201,17 @@ module Applocale
201
201
  info_row = infos['row'].to_s.strip
202
202
  info_key = infos['key'].to_s.strip
203
203
  info_key_str = infos['key_str'].to_s.strip
204
+ info_use_export = infos["use_export"]
205
+ if info_use_export.nil?
206
+ info_use_export = "false"
207
+ end
208
+ info_use_export_bool = info_use_export.to_s.downcase == "true"
204
209
  if info_row.length > 0 && info_key.length > 0
205
- obj = SheetInfoByRow.new(info_row.to_i, info_key, lang_header_key_dict)
210
+ obj = SheetInfoByRow.new(info_row.to_i, info_key, lang_header_key_dict, info_use_export_bool)
206
211
  sheet = Sheet.new(sheetname,obj)
207
212
  setting.sheet_obj_list.push(sheet)
208
213
  elsif info_key_str.length > 0
209
- obj = SheetInfoByHeader.new(info_key_str, lang_header_key_dict)
214
+ obj = SheetInfoByHeader.new(info_key_str, lang_header_key_dict, info_use_export_bool)
210
215
  sheet = Sheet.new(sheetname,obj)
211
216
  setting.sheet_obj_list.push(sheet)
212
217
  else
@@ -41,6 +41,16 @@ module Applocale
41
41
  end
42
42
  end
43
43
 
44
+ class SheetNotExist < CommonError
45
+ attr_accessor :sheetname
46
+ def initialize(sheetname)
47
+ @sheetname = sheetname
48
+ end
49
+ def message
50
+ "Can't find sheet: #{self.sheetname}"
51
+ end
52
+ end
53
+
44
54
  class CannotOpenXlsxFile < CommonError
45
55
  attr_accessor :path
46
56
  def initialize(path)
@@ -1,3 +1,3 @@
1
1
  module Applocale
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: applocale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kennix
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-27 00:00:00.000000000 Z
11
+ date: 2019-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler