embulk-input-google_spreadsheets 1.0.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 +7 -0
- data/.gitignore +10 -0
- data/.travis.yml +12 -0
- data/CHANGELOG.md +67 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +21 -0
- data/README.md +94 -0
- data/Rakefile +13 -0
- data/embulk-input-google_spreadsheets.gemspec +24 -0
- data/example/config_authorized_user.yml +19 -0
- data/example/config_authorized_user.yml.liquid +25 -0
- data/example/config_authorized_user_emoji_worksheet.yml +19 -0
- data/example/config_authorized_user_empty_rows_appears_at_the_same_as_max_fetch_rows.yml +20 -0
- data/example/config_authorized_user_large_data.yml +19 -0
- data/example/config_authorized_user_no_data.yml +18 -0
- data/example/config_service_account.yml +19 -0
- data/example/config_service_account_emoji_worksheet.yml +19 -0
- data/example/config_service_account_empty_rows_appears_at_the_same_as_max_fetch_rows.yml +20 -0
- data/example/config_service_account_large_data.yml +19 -0
- data/example/config_service_account_no_data.yml +18 -0
- data/example/setup_authorized_user_credentials.rb +34 -0
- data/lib/embulk/input/google_spreadsheets.rb +182 -0
- data/lib/embulk/input/google_spreadsheets/auth.rb +63 -0
- data/lib/embulk/input/google_spreadsheets/error.rb +36 -0
- data/lib/embulk/input/google_spreadsheets/pager.rb +107 -0
- data/lib/embulk/input/google_spreadsheets/pager_util.rb +28 -0
- data/lib/embulk/input/google_spreadsheets/record_typecaster.rb +73 -0
- data/lib/embulk/input/google_spreadsheets/spreadsheets_client.rb +75 -0
- data/lib/embulk/input/google_spreadsheets/spreadsheets_url_util.rb +23 -0
- data/lib/embulk/input/google_spreadsheets/typecast/base.rb +62 -0
- data/lib/embulk/input/google_spreadsheets/typecast/loose_typecast.rb +84 -0
- data/lib/embulk/input/google_spreadsheets/typecast/minimal_typecast.rb +109 -0
- data/lib/embulk/input/google_spreadsheets/typecast/strict_typecast.rb +236 -0
- data/lib/embulk/input/google_spreadsheets/typecast/timestamp_format_util.rb +29 -0
- data/lib/embulk/input/google_spreadsheets/typecast_factory.rb +34 -0
- data/test/assert_embulk_nothing_raised.rb +11 -0
- data/test/assert_embulk_raise.rb +11 -0
- data/test/dummy.key +27 -0
- data/test/helper.rb +21 -0
- data/test/test_auth.rb +82 -0
- data/test/test_configure.rb +155 -0
- data/test/test_loose_typecast.rb +194 -0
- data/test/test_minimal_typecast.rb +616 -0
- data/test/test_pager_util.rb +24 -0
- data/test/test_run_examples.rb +125 -0
- data/test/test_spreadsheets_client.rb +87 -0
- data/test/test_spreadsheets_url_util.rb +23 -0
- data/test/test_strict_typecast.rb +666 -0
- data/test/test_typecast_factory.rb +36 -0
- metadata +220 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: '0298679088554e589d5fcf35d28052321996397b'
|
4
|
+
data.tar.gz: 437d4de2a144529e3a12c734bf2742c475632c4b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f92a35388a40ac64fe15dde0eab169db9471884b4e27742ee5bb98ed94f994a528f6ad57c0d7400095953ac8864ba7907c600297b5a2d3f2df27096bbbab530e
|
7
|
+
data.tar.gz: 0c391fa5d167d32471d3881a77cc64012fe42a6aafa76f8a13250ef734a87d32d8aab24320db72b6b423ee2056deffc606ce2ad5f8aa9300fd591619b19f64ab
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
1.0.0 (2017-03-27)
|
2
|
+
==================
|
3
|
+
|
4
|
+
### Now, embulk-input-googlespreadsheet is recreated as embulk-input-google_spreadsheets, so this release has **lots of breaking changes**.
|
5
|
+
|
6
|
+
#### About Configuration
|
7
|
+
- Remove `account` option because this parameter can be set by `json_keyfile` or internal processing.
|
8
|
+
- Change acceptable values of `auth_method` option to `service_account`, `authorized_user`, `compute_engine`, and `application_default`.
|
9
|
+
- `json_key` is renamed to `service_account`.
|
10
|
+
- `refresh_token` is renamed to `authorized_user`.
|
11
|
+
- Remove `spreadsheet_key` option because it is ambiguous what to specify for this option.
|
12
|
+
- Create `spreadsheets_url` option instead of `spreadsheet_key` option.
|
13
|
+
- Create `max_fetch_rows` option for loading a worksheet which have lots of cells.
|
14
|
+
- Load data from a worksheet for each numerical value specified by this option.
|
15
|
+
- Create `null_string` option to define `NULL` value.
|
16
|
+
- Create `stop_on_invalid_record` option.
|
17
|
+
- Stop loading data if this option is true.
|
18
|
+
- Create `default_timestamp_format` option.
|
19
|
+
- Create `default_timezone` option.
|
20
|
+
- Create `typecast` option for `columns` configurations.
|
21
|
+
- You can choose `strict`, `loose`, `minimal`.
|
22
|
+
- You can set default by `default_typecast` option.
|
23
|
+
|
24
|
+
#### About Behaviours
|
25
|
+
- Improve memory usage
|
26
|
+
- The previous implementation loads all data (includes other worksheets) from the spreadsheets at once by each task, so embulk uses lots of memory.
|
27
|
+
- This version loads data from the specified worksheet for each numerical value specified by `max_fetch_rows` option.
|
28
|
+
- Change default timestamp format `%Y-%m-%d %H:%M:%S` to `%Y-%m-%d %H:%M:%S.%N %z`.
|
29
|
+
- This new default format follows embulk-core implementation.
|
30
|
+
- Ref. https://github.com/embulk/embulk/blob/936c5d5a20af3086f7d1e5779a89035105bb975b/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java#L10
|
31
|
+
- But, `Time.strptime` does not support `%6N`, so this plugin use `%N` instead.
|
32
|
+
- Enable to define default timestamp format by using `default_timestamp_format` option.
|
33
|
+
- Change default timezone from `Asia/Tokyo` to `UTC`.
|
34
|
+
- This follows world standard.
|
35
|
+
- Enable to define default timezone by using `default_timezone` option.
|
36
|
+
- Remove mysterious replace of string.
|
37
|
+
- The previous version replace `\t` and `\n` to ` `, but the implementation is so mysterious for users.
|
38
|
+
- This version does not do any mysterious replaces.
|
39
|
+
- Change errors more traceable.
|
40
|
+
- All errors are wrapped by `Embulk::Input::GoogleSpreadsheets::ConfigError` or `Embulk::Input::GoogleSpreadsheets::DataError`, so you can see JRuby stacktrace when some error occurs.
|
41
|
+
- Improve processing invalid records.
|
42
|
+
- Enable to skip by set `stop_on_invalid_record` option false.
|
43
|
+
- Improve Typecasting.
|
44
|
+
- Enable to define `NULL` value by using `null_string` option.
|
45
|
+
- Enable to use `yes` or `no` as boolean type.
|
46
|
+
- Disable to round values.
|
47
|
+
- The previous version typecast empty string to `0` if the type is `long`.
|
48
|
+
- The previous version typecast empty string to `0.0` if the type is `double`.
|
49
|
+
- Support loose typecasting.
|
50
|
+
- Support minimal typecasting.
|
51
|
+
|
52
|
+
#### Others
|
53
|
+
- Add tests
|
54
|
+
- Rename this plugin's name to `embulk-input-google_spreadsheets`
|
55
|
+
- Start CI
|
56
|
+
- https://travis-ci.org/medjed/embulk-input-google_spreadsheets
|
57
|
+
|
58
|
+
#### Known Issues
|
59
|
+
- [Some multi-byte strings cannot be used as a worksheet title.](https://github.com/medjed/embulk-input-google_spreadsheets/issues/6)
|
60
|
+
- [Emoji cannot be used as a worksheet title.](https://github.com/medjed/embulk-input-google_spreadsheets/issues/7)
|
61
|
+
|
62
|
+
0.3.0 (2017-03-08)
|
63
|
+
==================
|
64
|
+
|
65
|
+
- change: transfer `apollocarlos/embulk-input-googlespreadsheet` to `medjed/embulk-input-googlespreadsheet`
|
66
|
+
- incompatible change: raise `ConfigError` if worksheet cannot be found.
|
67
|
+
- incompatible change: change `CompatibilityError` to `UnmatchedNumberOfColumnsError` .
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
MIT License
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
a copy of this software and associated documentation files (the
|
6
|
+
"Software"), to deal in the Software without restriction, including
|
7
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
# Google Spreadsheets input plugin for Embulk
|
2
|
+
|
3
|
+
[](http://travis-ci.org/medjed/embulk-input-google_spreadsheets)
|
4
|
+
|
5
|
+
Embulk input plugin to load records from Google Spreadsheets.
|
6
|
+
|
7
|
+
## Overview
|
8
|
+
|
9
|
+
* **Plugin type**: input
|
10
|
+
|
11
|
+
## Configuration
|
12
|
+
|
13
|
+
| name | type | requirement | default | description |
|
14
|
+
|:--------------------|:------------|:------------|:----------------|:-----------------------|
|
15
|
+
| auth_method | string | optional | `authorized_user` | `service_account`, `authorized_user`, `compute_engine`, or `application_default` |
|
16
|
+
| json_keyfile | string | optional | | keyfile path or `content` |
|
17
|
+
| spreadsheets_url | string | required | | |
|
18
|
+
| worksheet_title | string | required | | worksheet title |
|
19
|
+
| start_column | integer | optional | `1` | |
|
20
|
+
| start_row | integer | optional | `1` | |
|
21
|
+
| end_row | integer | optional | `-1` | `-1` means loading records until an empty record appears. |
|
22
|
+
| max_fetch_rows | integer | optional | `10000` | Load data from a worksheet for each numerical value specified by this option. |
|
23
|
+
| null_string | string | optional | `''` | Replace this value to `NULL` |
|
24
|
+
| stop_on_invalid_record | boolean | optional | `true` | |
|
25
|
+
| default_timestamp_format | string | optional | `'%Y-%m-%d %H:%M:%S.%N %z'` | |
|
26
|
+
| default_timezone | string | optional | `'UTC'` | |
|
27
|
+
| default_typecast | string | optional | `'strict'` | |
|
28
|
+
| columns | array | required | | |
|
29
|
+
|
30
|
+
##### about keyfile
|
31
|
+
* if `auth_method` is `compute_engine` or `application_default`, this option is not required.
|
32
|
+
* if `auth_method` is `authorized_user`, this plugin supposes the format is the below.
|
33
|
+
|
34
|
+
```json
|
35
|
+
{
|
36
|
+
"client_id":"xxxxxxxxxxx.apps.googleusercontent.com",
|
37
|
+
"client_secret":"xxxxxxxxxxx",
|
38
|
+
"refresh_token":"xxxxxxxxxxx"
|
39
|
+
}
|
40
|
+
```
|
41
|
+
* if `auth_method` is `service_account`, set the service account credential json file path.
|
42
|
+
|
43
|
+
##### about columns
|
44
|
+
* name: column name
|
45
|
+
* type: boolean, long, double, string, timestamp, json
|
46
|
+
* format: timestamp format like `'%Y-%m-%d %H:%M:%S.%N %z'`
|
47
|
+
* timezone: timezone
|
48
|
+
* typecast: you can choose `strict`, `loose`, `minimal` (default: `strict`)
|
49
|
+
* `strict`: raise TypecastError if typecasting is failed.
|
50
|
+
* `loose` : set `NULL` value if typecasting is failed.
|
51
|
+
* `minimal` : typecast minimally.
|
52
|
+
|
53
|
+
|
54
|
+
## Development
|
55
|
+
|
56
|
+
### Run example:
|
57
|
+
|
58
|
+
1. Execute `example/setup_authorized_user_credentials.rb` if you don't have credentials, then
|
59
|
+
2.
|
60
|
+
|
61
|
+
```
|
62
|
+
$ embulk bundle install --path vendor/bundle
|
63
|
+
$ embulk run -b . -l trace example/config_authorized_user.yml
|
64
|
+
```
|
65
|
+
|
66
|
+
### Run test:
|
67
|
+
|
68
|
+
```
|
69
|
+
$ bundle exec rake test
|
70
|
+
```
|
71
|
+
|
72
|
+
To run tests which actually connects to Google Spreadsheets such as `test/test_google_spreadsheets_client.rb`,
|
73
|
+
prepare a json\_keyfile at `example/service_account_credentials.json`, then
|
74
|
+
|
75
|
+
```
|
76
|
+
$ bundle exec ruby test/test_google_spreadsheets_client.rb
|
77
|
+
$ bundle exec ruby test/test_example.rb
|
78
|
+
```
|
79
|
+
|
80
|
+
### Release gem:
|
81
|
+
|
82
|
+
Fix gemspec, then
|
83
|
+
|
84
|
+
```
|
85
|
+
$ bundle exec rake release
|
86
|
+
```
|
87
|
+
|
88
|
+
## ChangeLog
|
89
|
+
|
90
|
+
[CHANGELOG.md](CHANGELOG.md)
|
91
|
+
|
92
|
+
## Known Issues
|
93
|
+
|
94
|
+
[Github Issues](https://github.com/medjed/embulk-input-google_spreadsheets/issues)
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
desc 'Run test_unit based test'
|
6
|
+
Rake::TestTask.new(:test) do |t|
|
7
|
+
t.libs << "test"
|
8
|
+
t.test_files = Dir["test/**/test_*.rb"].sort
|
9
|
+
t.verbose = true
|
10
|
+
t.warning = false
|
11
|
+
end
|
12
|
+
task :default => :test
|
13
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = 'embulk-input-google_spreadsheets'
|
3
|
+
spec.version = '1.0.0'
|
4
|
+
spec.authors = %w(Civitaspo yang-xu)
|
5
|
+
spec.summary = 'Google Spreadsheets input plugin for Embulk'
|
6
|
+
spec.description = 'Load records from Google Spreadsheets.'
|
7
|
+
spec.email = %w(civitaspo@gmail.com xu.yang.9.65@gmail.com)
|
8
|
+
spec.licenses = ['MIT']
|
9
|
+
spec.homepage = 'https://github.com/medjed/embulk-input-google_spreadsheets'
|
10
|
+
|
11
|
+
spec.files = `git ls-files`.split("\n") + Dir['classpath/*.jar']
|
12
|
+
spec.test_files = spec.files.grep(%r{^(test|spec)/})
|
13
|
+
spec.require_paths = ['lib']
|
14
|
+
|
15
|
+
spec.add_development_dependency 'embulk', '>= 0.8.1'
|
16
|
+
spec.add_development_dependency 'bundler'
|
17
|
+
spec.add_development_dependency 'rake'
|
18
|
+
spec.add_development_dependency 'highline'
|
19
|
+
spec.add_development_dependency 'test-unit'
|
20
|
+
spec.add_development_dependency 'test-unit-rr'
|
21
|
+
|
22
|
+
spec.add_dependency 'google-api-client', '>= 0.9.15'
|
23
|
+
spec.add_dependency 'time_with_zone'
|
24
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: authorized_user
|
4
|
+
json_keyfile: example/authorized_user_credentials.json
|
5
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
6
|
+
worksheet_title: sheet1
|
7
|
+
start_row: 2
|
8
|
+
default_timezone: Asia/Tokyo
|
9
|
+
null_string: '\N'
|
10
|
+
default_typecast: strict
|
11
|
+
columns:
|
12
|
+
- {name: _c1, type: boolean}
|
13
|
+
- {name: _c2, type: string}
|
14
|
+
- {name: _c3, type: long}
|
15
|
+
- {name: _c4, type: double}
|
16
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
17
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
18
|
+
out:
|
19
|
+
type: stdout
|
@@ -0,0 +1,25 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: authorized_user
|
4
|
+
json_keyfile:
|
5
|
+
content: |
|
6
|
+
{
|
7
|
+
"client_id": "{{ env.GOOGLE_AUTH_CLIENT_ID }}",
|
8
|
+
"client_secret": "{{ env.GOOGLE_AUTH_CLIENT_SECRET }}",
|
9
|
+
"refresh_token": "{{ env.GOOGLE_AUTH_REFRESH_TOKEN }}"
|
10
|
+
}
|
11
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
12
|
+
worksheet_title: sheet1
|
13
|
+
start_column: 2
|
14
|
+
default_timezone: Asia/Tokyo
|
15
|
+
null_string: '\N'
|
16
|
+
columns:
|
17
|
+
- {name: _c1, type: boolean}
|
18
|
+
- {name: _c2, type: string}
|
19
|
+
- {name: _c3, type: long}
|
20
|
+
- {name: _c4, type: double}
|
21
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
22
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
23
|
+
|
24
|
+
out:
|
25
|
+
type: stdout
|
@@ -0,0 +1,19 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: authorized_user
|
4
|
+
json_keyfile: example/authorized_user_credentials.json
|
5
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
6
|
+
worksheet_title: 🍣emoji🍣
|
7
|
+
start_row: 2
|
8
|
+
default_timezone: Asia/Tokyo
|
9
|
+
null_string: '\N'
|
10
|
+
default_typecast: strict
|
11
|
+
columns:
|
12
|
+
- {name: _c1, type: boolean}
|
13
|
+
- {name: _c2, type: string}
|
14
|
+
- {name: _c3, type: long}
|
15
|
+
- {name: _c4, type: double}
|
16
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
17
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
18
|
+
out:
|
19
|
+
type: stdout
|
@@ -0,0 +1,20 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: authorized_user
|
4
|
+
json_keyfile: example/authorized_user_credentials.json
|
5
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
6
|
+
worksheet_title: Empty rows appears at the same as max_fetch_rows
|
7
|
+
start_row: 2
|
8
|
+
max_fetch_rows: 2
|
9
|
+
default_timezone: Asia/Tokyo
|
10
|
+
null_string: '\N'
|
11
|
+
default_typecast: strict
|
12
|
+
columns:
|
13
|
+
- {name: _c1, type: boolean}
|
14
|
+
- {name: _c2, type: string}
|
15
|
+
- {name: _c3, type: long}
|
16
|
+
- {name: _c4, type: double}
|
17
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
18
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
19
|
+
out:
|
20
|
+
type: stdout
|
@@ -0,0 +1,19 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: authorized_user
|
4
|
+
json_keyfile: example/authorized_user_credentials.json
|
5
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
6
|
+
worksheet_title: Large Data
|
7
|
+
start_row: 2
|
8
|
+
default_timezone: Asia/Tokyo
|
9
|
+
null_string: '\N'
|
10
|
+
default_typecast: strict
|
11
|
+
columns:
|
12
|
+
- {name: _c1, type: boolean}
|
13
|
+
- {name: _c2, type: string}
|
14
|
+
- {name: _c3, type: long}
|
15
|
+
- {name: _c4, type: double}
|
16
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
17
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
18
|
+
out:
|
19
|
+
type: stdout
|
@@ -0,0 +1,18 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: authorized_user
|
4
|
+
json_keyfile: example/authorized_user_credentials.json
|
5
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
6
|
+
worksheet_title: No Data
|
7
|
+
default_timezone: Asia/Tokyo
|
8
|
+
null_string: '\N'
|
9
|
+
default_typecast: strict
|
10
|
+
columns:
|
11
|
+
- {name: _c1, type: boolean}
|
12
|
+
- {name: _c2, type: string}
|
13
|
+
- {name: _c3, type: long}
|
14
|
+
- {name: _c4, type: double}
|
15
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
16
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
17
|
+
out:
|
18
|
+
type: stdout
|
@@ -0,0 +1,19 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: service_account
|
4
|
+
json_keyfile: example/service_account_credentials.json
|
5
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
6
|
+
worksheet_title: sheet1
|
7
|
+
start_row: 2
|
8
|
+
default_timezone: Asia/Tokyo
|
9
|
+
null_string: '\N'
|
10
|
+
default_typecast: strict
|
11
|
+
columns:
|
12
|
+
- {name: _c1, type: boolean}
|
13
|
+
- {name: _c2, type: string}
|
14
|
+
- {name: _c3, type: long}
|
15
|
+
- {name: _c4, type: double}
|
16
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
17
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
18
|
+
out:
|
19
|
+
type: stdout
|
@@ -0,0 +1,19 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: service_account
|
4
|
+
json_keyfile: example/service_account_credentials.json
|
5
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
6
|
+
worksheet_title: 🍣emoji🍣
|
7
|
+
start_row: 2
|
8
|
+
default_timezone: Asia/Tokyo
|
9
|
+
null_string: '\N'
|
10
|
+
default_typecast: strict
|
11
|
+
columns:
|
12
|
+
- {name: _c1, type: boolean}
|
13
|
+
- {name: _c2, type: string}
|
14
|
+
- {name: _c3, type: long}
|
15
|
+
- {name: _c4, type: double}
|
16
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
17
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
18
|
+
out:
|
19
|
+
type: stdout
|
@@ -0,0 +1,20 @@
|
|
1
|
+
in:
|
2
|
+
type: google_spreadsheets
|
3
|
+
auth_method: service_account
|
4
|
+
json_keyfile: example/service_account_credentials.json
|
5
|
+
spreadsheets_url: https://docs.google.com/spreadsheets/d/1Cxz-LudQuhRAGZL8mBoHs6mRnpjODpyF4Rwc5UYoV1E/edit#gid=0
|
6
|
+
worksheet_title: Empty rows appears at the same as max_fetch_rows
|
7
|
+
start_row: 2
|
8
|
+
max_fetch_rows: 2
|
9
|
+
default_timezone: Asia/Tokyo
|
10
|
+
null_string: '\N'
|
11
|
+
default_typecast: strict
|
12
|
+
columns:
|
13
|
+
- {name: _c1, type: boolean}
|
14
|
+
- {name: _c2, type: string}
|
15
|
+
- {name: _c3, type: long}
|
16
|
+
- {name: _c4, type: double}
|
17
|
+
- {name: _c5, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'}
|
18
|
+
- {name: _c6, type: timestamp, format: '%Y-%m-%d'}
|
19
|
+
out:
|
20
|
+
type: stdout
|