smartsheet 1.0.0.beta.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rubocop.yml +5 -0
- data/.travis.yml +6 -0
- data/Gemfile +6 -0
- data/LICENSE +202 -0
- data/README.md +139 -0
- data/Rakefile +13 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/smartsheet.rb +3 -0
- data/lib/smartsheet/api/body_builder.rb +26 -0
- data/lib/smartsheet/api/endpoint_spec.rb +35 -0
- data/lib/smartsheet/api/faraday_adapter/faraday_net_client.rb +42 -0
- data/lib/smartsheet/api/faraday_adapter/faraday_response.rb +60 -0
- data/lib/smartsheet/api/faraday_adapter/middleware/faraday_error_translator.rb +20 -0
- data/lib/smartsheet/api/faraday_adapter/middleware/response_parser.rb +25 -0
- data/lib/smartsheet/api/file_spec.rb +28 -0
- data/lib/smartsheet/api/header_builder.rb +85 -0
- data/lib/smartsheet/api/request.rb +29 -0
- data/lib/smartsheet/api/request_client.rb +26 -0
- data/lib/smartsheet/api/request_logger.rb +148 -0
- data/lib/smartsheet/api/request_spec.rb +43 -0
- data/lib/smartsheet/api/response_net_client_decorator.rb +47 -0
- data/lib/smartsheet/api/retry_logic.rb +37 -0
- data/lib/smartsheet/api/retry_net_client_decorator.rb +36 -0
- data/lib/smartsheet/api/url_builder.rb +25 -0
- data/lib/smartsheet/client.rb +115 -0
- data/lib/smartsheet/constants.rb +16 -0
- data/lib/smartsheet/endpoints/contacts/contacts.rb +29 -0
- data/lib/smartsheet/endpoints/favorites/favorites.rb +158 -0
- data/lib/smartsheet/endpoints/folders/folders.rb +124 -0
- data/lib/smartsheet/endpoints/groups/groups.rb +82 -0
- data/lib/smartsheet/endpoints/home/home.rb +19 -0
- data/lib/smartsheet/endpoints/reports/reports.rb +96 -0
- data/lib/smartsheet/endpoints/reports/reports_share.rb +68 -0
- data/lib/smartsheet/endpoints/search/search.rb +29 -0
- data/lib/smartsheet/endpoints/server_info/server_info.rb +19 -0
- data/lib/smartsheet/endpoints/share/share.rb +58 -0
- data/lib/smartsheet/endpoints/sheets/cells.rb +80 -0
- data/lib/smartsheet/endpoints/sheets/columns.rb +65 -0
- data/lib/smartsheet/endpoints/sheets/comments.rb +60 -0
- data/lib/smartsheet/endpoints/sheets/comments_attachments.rb +77 -0
- data/lib/smartsheet/endpoints/sheets/discussions.rb +80 -0
- data/lib/smartsheet/endpoints/sheets/discussions_attachments.rb +21 -0
- data/lib/smartsheet/endpoints/sheets/rows.rb +91 -0
- data/lib/smartsheet/endpoints/sheets/rows_attachments.rb +91 -0
- data/lib/smartsheet/endpoints/sheets/sheets.rb +301 -0
- data/lib/smartsheet/endpoints/sheets/sheets_attachments.rb +173 -0
- data/lib/smartsheet/endpoints/sheets/sheets_share.rb +68 -0
- data/lib/smartsheet/endpoints/sights/sights.rb +97 -0
- data/lib/smartsheet/endpoints/sights/sights_share.rb +68 -0
- data/lib/smartsheet/endpoints/templates/templates.rb +28 -0
- data/lib/smartsheet/endpoints/token/token.rb +57 -0
- data/lib/smartsheet/endpoints/update_requests/sent_update_requests.rb +42 -0
- data/lib/smartsheet/endpoints/update_requests/update_requests.rb +69 -0
- data/lib/smartsheet/endpoints/users/alternate_emails.rb +77 -0
- data/lib/smartsheet/endpoints/users/users.rb +73 -0
- data/lib/smartsheet/endpoints/webhooks/webhooks.rb +70 -0
- data/lib/smartsheet/endpoints/workspaces/workspaces.rb +83 -0
- data/lib/smartsheet/endpoints/workspaces/workspaces_share.rb +68 -0
- data/lib/smartsheet/error.rb +30 -0
- data/lib/smartsheet/general_request.rb +53 -0
- data/lib/smartsheet/version.rb +5 -0
- data/read-write-sheet/config.json +4 -0
- data/read-write-sheet/read_write_sheet.rb +89 -0
- data/smartsheet.gemspec +47 -0
- metadata +279 -0
@@ -0,0 +1,73 @@
|
|
1
|
+
require_relative 'alternate_emails'
|
2
|
+
|
3
|
+
module Smartsheet
|
4
|
+
class Users
|
5
|
+
attr_reader :client, :alternate_emails
|
6
|
+
private :client
|
7
|
+
|
8
|
+
def initialize(client)
|
9
|
+
@client = client
|
10
|
+
|
11
|
+
@alternate_emails = AlternateEmails.new(client)
|
12
|
+
end
|
13
|
+
|
14
|
+
def add(body:, params: {}, header_overrides: {})
|
15
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['users'], body_type: :json)
|
16
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
17
|
+
header_overrides: header_overrides,
|
18
|
+
body: body,
|
19
|
+
params: params
|
20
|
+
)
|
21
|
+
client.make_request(endpoint_spec, request_spec)
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_current(params: {}, header_overrides: {})
|
25
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['users', 'me'])
|
26
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
27
|
+
params: params,
|
28
|
+
header_overrides: header_overrides
|
29
|
+
)
|
30
|
+
client.make_request(endpoint_spec, request_spec)
|
31
|
+
end
|
32
|
+
|
33
|
+
def get(user_id:, params: {}, header_overrides: {})
|
34
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['users', :user_id])
|
35
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
36
|
+
params: params,
|
37
|
+
header_overrides: header_overrides,
|
38
|
+
user_id: user_id
|
39
|
+
)
|
40
|
+
client.make_request(endpoint_spec, request_spec)
|
41
|
+
end
|
42
|
+
|
43
|
+
def list(params: {}, header_overrides: {})
|
44
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['users'])
|
45
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
46
|
+
header_overrides: header_overrides,
|
47
|
+
params: params
|
48
|
+
)
|
49
|
+
client.make_request(endpoint_spec, request_spec)
|
50
|
+
end
|
51
|
+
|
52
|
+
def remove(user_id:, params: {}, header_overrides: {})
|
53
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['users', :user_id])
|
54
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
55
|
+
header_overrides: header_overrides,
|
56
|
+
params: params,
|
57
|
+
user_id: user_id
|
58
|
+
)
|
59
|
+
client.make_request(endpoint_spec, request_spec)
|
60
|
+
end
|
61
|
+
|
62
|
+
def update(user_id:, body:, params: {}, header_overrides: {})
|
63
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:put, ['users', :user_id], body_type: :json)
|
64
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
65
|
+
params: params,
|
66
|
+
header_overrides: header_overrides,
|
67
|
+
body: body,
|
68
|
+
user_id: user_id
|
69
|
+
)
|
70
|
+
client.make_request(endpoint_spec, request_spec)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Smartsheet
|
2
|
+
class Webhooks
|
3
|
+
attr_reader :client
|
4
|
+
private :client
|
5
|
+
|
6
|
+
def initialize(client)
|
7
|
+
@client = client
|
8
|
+
end
|
9
|
+
|
10
|
+
def create(body:, params: {}, header_overrides: {})
|
11
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['webhooks'], body_type: :json)
|
12
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
13
|
+
params: params,
|
14
|
+
header_overrides: header_overrides,
|
15
|
+
body: body
|
16
|
+
)
|
17
|
+
client.make_request(endpoint_spec, request_spec)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(webhook_id:, params: {}, header_overrides: {})
|
21
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['webhooks', :webhook_id])
|
22
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
23
|
+
params: params,
|
24
|
+
header_overrides: header_overrides,
|
25
|
+
webhook_id: webhook_id
|
26
|
+
)
|
27
|
+
client.make_request(endpoint_spec, request_spec)
|
28
|
+
end
|
29
|
+
|
30
|
+
def get(webhook_id:, params: {}, header_overrides: {})
|
31
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['webhooks', :webhook_id])
|
32
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
33
|
+
params: params,
|
34
|
+
header_overrides: header_overrides,
|
35
|
+
webhook_id: webhook_id
|
36
|
+
)
|
37
|
+
client.make_request(endpoint_spec, request_spec)
|
38
|
+
end
|
39
|
+
|
40
|
+
def list(params: {}, header_overrides: {})
|
41
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['webhooks'])
|
42
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
43
|
+
params: params,
|
44
|
+
header_overrides: header_overrides
|
45
|
+
)
|
46
|
+
client.make_request(endpoint_spec, request_spec)
|
47
|
+
end
|
48
|
+
|
49
|
+
def reset_shared_secret(webhook_id:, params: {}, header_overrides: {})
|
50
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['webhooks', :webhook_id, 'resetsharedsecret'])
|
51
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
52
|
+
params: params,
|
53
|
+
header_overrides: header_overrides,
|
54
|
+
webhook_id: webhook_id
|
55
|
+
)
|
56
|
+
client.make_request(endpoint_spec, request_spec)
|
57
|
+
end
|
58
|
+
|
59
|
+
def update(webhook_id:, body:, params: {}, header_overrides: {})
|
60
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:put, ['webhooks', :webhook_id], body_type: :json)
|
61
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
62
|
+
params: params,
|
63
|
+
header_overrides: header_overrides,
|
64
|
+
body: body,
|
65
|
+
webhook_id: webhook_id
|
66
|
+
)
|
67
|
+
client.make_request(endpoint_spec, request_spec)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require_relative 'workspaces_share'
|
2
|
+
|
3
|
+
module Smartsheet
|
4
|
+
class Workspaces
|
5
|
+
attr_reader :client, :share
|
6
|
+
private :client
|
7
|
+
|
8
|
+
def initialize(client)
|
9
|
+
@client = client
|
10
|
+
|
11
|
+
@share = WorkspacesShare.new(client)
|
12
|
+
end
|
13
|
+
|
14
|
+
def copy(workspace_id:, body:, params: {}, header_overrides: {})
|
15
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(
|
16
|
+
:post,
|
17
|
+
['workspaces', :workspace_id, 'copy'],
|
18
|
+
body_type: :json
|
19
|
+
)
|
20
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
21
|
+
header_overrides: header_overrides,
|
22
|
+
params: params,
|
23
|
+
body: body,
|
24
|
+
workspace_id: workspace_id
|
25
|
+
)
|
26
|
+
client.make_request(endpoint_spec, request_spec)
|
27
|
+
end
|
28
|
+
|
29
|
+
def create(body:, params: {}, header_overrides: {})
|
30
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['workspaces'], body_type: :json)
|
31
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
32
|
+
params: params,
|
33
|
+
header_overrides: header_overrides,
|
34
|
+
body: body
|
35
|
+
)
|
36
|
+
client.make_request(endpoint_spec, request_spec)
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete(workspace_id:, params: {}, header_overrides: {})
|
40
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['workspaces', :workspace_id])
|
41
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
42
|
+
params: params,
|
43
|
+
header_overrides: header_overrides,
|
44
|
+
workspace_id: workspace_id
|
45
|
+
)
|
46
|
+
client.make_request(endpoint_spec, request_spec)
|
47
|
+
end
|
48
|
+
|
49
|
+
def get(workspace_id:, params: {}, header_overrides: {})
|
50
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['workspaces', :workspace_id])
|
51
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
52
|
+
header_overrides: header_overrides,
|
53
|
+
params: params,
|
54
|
+
workspace_id: workspace_id
|
55
|
+
)
|
56
|
+
client.make_request(endpoint_spec, request_spec)
|
57
|
+
end
|
58
|
+
|
59
|
+
def list(params: {}, header_overrides: {})
|
60
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['workspaces'])
|
61
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
62
|
+
header_overrides: header_overrides,
|
63
|
+
params: params,
|
64
|
+
)
|
65
|
+
client.make_request(endpoint_spec, request_spec)
|
66
|
+
end
|
67
|
+
|
68
|
+
def update(workspace_id:, body:, params: {}, header_overrides: {})
|
69
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(
|
70
|
+
:put,
|
71
|
+
['workspaces', :workspace_id],
|
72
|
+
body_type: :json
|
73
|
+
)
|
74
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
75
|
+
params: params,
|
76
|
+
header_overrides: header_overrides,
|
77
|
+
body: body,
|
78
|
+
workspace_id: workspace_id
|
79
|
+
)
|
80
|
+
client.make_request(endpoint_spec, request_spec)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'smartsheet/endpoints/share/share'
|
2
|
+
|
3
|
+
module Smartsheet
|
4
|
+
class WorkspacesShare
|
5
|
+
attr_reader :client
|
6
|
+
private :client
|
7
|
+
|
8
|
+
URL = ['workspaces', :workspace_id].freeze
|
9
|
+
|
10
|
+
def initialize(client)
|
11
|
+
@client = client
|
12
|
+
end
|
13
|
+
|
14
|
+
def delete(workspace_id:, share_id:, params: {}, header_overrides: {})
|
15
|
+
delete_share(
|
16
|
+
share_id: share_id,
|
17
|
+
url: URL,
|
18
|
+
params: params,
|
19
|
+
header_overrides: header_overrides,
|
20
|
+
workspace_id: workspace_id
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
def get(workspace_id:, share_id:, params: {}, header_overrides: {})
|
25
|
+
get_share(
|
26
|
+
share_id: share_id,
|
27
|
+
url: URL,
|
28
|
+
params: params,
|
29
|
+
header_overrides: header_overrides,
|
30
|
+
workspace_id: workspace_id
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
def list(workspace_id:, params: {}, header_overrides: {})
|
35
|
+
list_share(
|
36
|
+
url: URL,
|
37
|
+
header_overrides: header_overrides,
|
38
|
+
params: params,
|
39
|
+
workspace_id: workspace_id
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
def create(workspace_id:, body:, params: {}, header_overrides: {})
|
44
|
+
create_share(
|
45
|
+
url: URL,
|
46
|
+
header_overrides: header_overrides,
|
47
|
+
params: params,
|
48
|
+
body: body,
|
49
|
+
workspace_id: workspace_id
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
def update(workspace_id:, share_id:, body:, params: {}, header_overrides: {})
|
54
|
+
update_share(
|
55
|
+
share_id: share_id,
|
56
|
+
url: URL,
|
57
|
+
params: params,
|
58
|
+
header_overrides: header_overrides,
|
59
|
+
body: body,
|
60
|
+
workspace_id: workspace_id
|
61
|
+
)
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
include Smartsheet::Share
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
module Smartsheet
|
4
|
+
class Error < StandardError; end
|
5
|
+
|
6
|
+
# Errors for invalid requests, timeouts, etc.
|
7
|
+
class RequestError < Error
|
8
|
+
attr_reader :wrapped_exception
|
9
|
+
|
10
|
+
def initialize(ex)
|
11
|
+
super(ex.message)
|
12
|
+
@wrapped_exception = ex
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class ApiError < Error
|
17
|
+
extend Forwardable
|
18
|
+
|
19
|
+
def initialize(error_response)
|
20
|
+
super(error_response.message)
|
21
|
+
@error_response = error_response
|
22
|
+
end
|
23
|
+
|
24
|
+
def_delegators :error_response, :error_code, :message, :ref_id, :detail
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
attr_reader :error_response
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'smartsheet/api/file_spec'
|
2
|
+
|
3
|
+
module Smartsheet
|
4
|
+
module GeneralRequest
|
5
|
+
def request(method:, url_path:, body: nil, params: {}, header_overrides: {})
|
6
|
+
spec = body.nil? ? {} : {body_type: :json}
|
7
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(method, [url_path], **spec)
|
8
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
9
|
+
header_overrides: header_overrides,
|
10
|
+
body: body,
|
11
|
+
params: params
|
12
|
+
)
|
13
|
+
client.make_request(endpoint_spec, request_spec)
|
14
|
+
end
|
15
|
+
|
16
|
+
def request_with_file(
|
17
|
+
method:,
|
18
|
+
url_path:,
|
19
|
+
file:,
|
20
|
+
file_length:,
|
21
|
+
filename:,
|
22
|
+
content_type: '',
|
23
|
+
params: {},
|
24
|
+
header_overrides: {}
|
25
|
+
)
|
26
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(method, [url_path], body_type: :file)
|
27
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
28
|
+
header_overrides: header_overrides,
|
29
|
+
params: params,
|
30
|
+
file_spec: Smartsheet::API::ObjectFileSpec.new(file, filename, file_length, content_type)
|
31
|
+
)
|
32
|
+
client.make_request(endpoint_spec, request_spec)
|
33
|
+
end
|
34
|
+
|
35
|
+
def request_with_file_from_path(
|
36
|
+
method:,
|
37
|
+
url_path:,
|
38
|
+
path:,
|
39
|
+
filename: nil,
|
40
|
+
content_type: '',
|
41
|
+
params: {},
|
42
|
+
header_overrides: {}
|
43
|
+
)
|
44
|
+
endpoint_spec = Smartsheet::API::EndpointSpec.new(method, [url_path], body_type: :file)
|
45
|
+
request_spec = Smartsheet::API::RequestSpec.new(
|
46
|
+
header_overrides: header_overrides,
|
47
|
+
params: params,
|
48
|
+
file_spec: Smartsheet::API::PathFileSpec.new(path, filename, content_type)
|
49
|
+
)
|
50
|
+
client.make_request(endpoint_spec, request_spec)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'smartsheet/client'
|
2
|
+
|
3
|
+
|
4
|
+
def row_update(row_id, column_id, value)
|
5
|
+
{
|
6
|
+
id: row_id,
|
7
|
+
cells: [{
|
8
|
+
columnId: column_id,
|
9
|
+
value: value
|
10
|
+
}]
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def column_map(sheet)
|
15
|
+
column_map = {}
|
16
|
+
sheet[:columns].each do |column|
|
17
|
+
column_map[column[:title]] = column[:id]
|
18
|
+
end
|
19
|
+
|
20
|
+
column_map
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_cell_by_column(row, column_id)
|
24
|
+
row[:cells].find {|cell| cell[:column_id] == column_id}
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_cell_by_column_name(row, column_name, column_map)
|
28
|
+
get_cell_by_column(row, column_map[column_name])
|
29
|
+
end
|
30
|
+
|
31
|
+
def build_update_complete_row(row, column_map)
|
32
|
+
status_cell = get_cell_by_column_name(row, 'Status', column_map)
|
33
|
+
remaining_cell = get_cell_by_column_name(row, 'Remaining', column_map)
|
34
|
+
|
35
|
+
if status_cell[:display_value] == 'Complete'
|
36
|
+
unless remaining_cell[:display_value] == '0'
|
37
|
+
puts "Updating row #{row[:row_number]}"
|
38
|
+
row_update(row[:id], remaining_cell[:column_id], 0)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def build_update_complete_rows_body(sheet)
|
44
|
+
column_map = column_map(sheet)
|
45
|
+
update_rows = []
|
46
|
+
sheet[:rows].each do |row|
|
47
|
+
update_row = build_update_complete_row(row, column_map)
|
48
|
+
update_rows.push(update_row) unless update_row.nil?
|
49
|
+
end
|
50
|
+
|
51
|
+
update_rows
|
52
|
+
end
|
53
|
+
|
54
|
+
def update_complete_rows(sheet_id, client)
|
55
|
+
sheet = client.sheets.get(sheet_id: sheet_id)
|
56
|
+
|
57
|
+
update_rows_body = build_update_complete_rows_body(sheet)
|
58
|
+
if update_rows_body.empty?
|
59
|
+
puts 'No Update Required'
|
60
|
+
return
|
61
|
+
end
|
62
|
+
|
63
|
+
client.sheets.rows.update(sheet_id: sheet[:id], body: update_rows_body)
|
64
|
+
end
|
65
|
+
|
66
|
+
def load_config(config_name)
|
67
|
+
file = File.open(config_name)
|
68
|
+
|
69
|
+
JSON.load(file)
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
config = load_config('config.json')
|
74
|
+
|
75
|
+
client = Smartsheet::Client.new(token: config['token'])
|
76
|
+
|
77
|
+
begin
|
78
|
+
update_complete_rows(config['sheet_id'], client)
|
79
|
+
rescue Smartsheet::ApiError => e
|
80
|
+
puts "API returned error:"
|
81
|
+
puts "\terror code: #{e.error_code}"
|
82
|
+
puts "\tref id: #{e.ref_id}"
|
83
|
+
puts "\tmessage: #{e.message}"
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|