Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import sample sheet directly from file #1

Merged
merged 2 commits into from Jul 9, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion Gemfile
@@ -1,2 +1,2 @@
source 'https://rubygems.org'
gem 'smartsheet', '>= 1.0.0'
gem 'smartsheet', '>= 1.2.0'
5 changes: 3 additions & 2 deletions config.json
@@ -1,4 +1,5 @@
{
"token": "",
"sheet_id": "3948180799809412"
"token": "",
"source_excel_path": "./Sample Sheet.xlsx",
"sheet_name": "Read-Write Sample Sheet"
}
26 changes: 24 additions & 2 deletions read_write_sheet.rb
Expand Up @@ -28,15 +28,34 @@ def evaluate_row_and_build_update(row, column_map)
return row_to_update
end

# Import an Excel sheet to operate on; see the bundled 'Sample Sheet.xlsx'
def import_excel_sheet(client, file_path, sheet_name)
result = client.sheets.import_from_file_path(
path: file_path,
file_type: :xlsx,
params: {
sheetName: sheet_name,
headerRowIndex: 0,
primaryColumnIndex: 0
}
)[:result]

puts "Imported Excel doc to sheet named '#{result[:name]}'"

result[:id]
end

# TODO: Edit config.json to set desired sheet id and API token
config = JSON.load(File.open('config.json'))

# If empty, defaults to environment variable SMARTSHEET_ACCESS_TOKEN
access_token = config['token']

# Id of sheet to load and update
sheet_id = config['sheet_id']
# Sample sheet file to import to Smartsheet
excel_file_path = config['source_excel_path']

# Name to assign to the imported sheet
sheet_name = config['sheet_name']

# Configure logging
logger = Logger.new(STDOUT)
Expand All @@ -46,6 +65,9 @@ def evaluate_row_and_build_update(row, column_map)
client = Smartsheet::Client.new(token: access_token, logger: logger)

begin
# Import sample sheet
sheet_id = import_excel_sheet(client, excel_file_path, sheet_name)

# Load entire sheet
sheet = client.sheets.get(sheet_id: sheet_id)
puts "Loaded #{sheet[:total_row_count]} rows from sheet '#{sheet[:name]}'"
Expand Down