nesquena/sheet_mapper — an open-source project — sits at 118 GitHub stars. Map spreadsheet rows to a ruby objects
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
SheetMapper is about taking a google spreadsheet and converting a set of data rows into simple ruby objects.
Installation
Setup in Gemfile:
# Gemfile
gem 'sheet_mapper'
and then require 'sheet_mapper' and you are done!
Rationale
You may ask why you would need to have an object mapper from a Google Spreadsheet. Consider though that spreadsheets are collaborative, have revision tracking, securely authenticated, are accessible anywhere and are familiar to non-technical people.
If you ever needed a dead simple admin interface, configuration document, or basic content management system, a spreadsheet is a pretty great solution that requires very little engineering overhead. Next time you are in a position where non-technical people
need to manage data, ask yourself if a spreadsheet might be a good first solution.
Usage
First, you describe how to map a spreadsheet into data rows with a sheet object mapper:
class SomeMapper < SheetMapper::Base
# Defines each column for a row and maps each column to an attribute
# Should be listed in the order the data appears in the spreadsheet
columns :foo, :bar, :baz
# Defines the condition for a row to be considered valid
# Also have access to `pos` which is the row number in the worksheet
def valid_row?
self[:foo].present? && self.pos > 2
end
# Convert bar column to a boolean from raw string
# Any method named after a column will override the default value
def bar
!!self[:bar].match(/true/i)
end
end
The mapper describes the column mappings and transformations to turn a spreadsheet row into a ruby object. Then you can apply
a mapper to any worksheet (collection):
# Access a particular spreadsheet by key
sheet = SheetMapper::Spreadsheet.new(:mapper=>SomeMapper, :key=>'k', :session => YourGoogleSession)
# Find a particular worksheet (collection) by title
collection = sheet.find_collection_by_title('title')
# Iterate over the records within the worksheet
records = collection.each do |record|
p record.attributes
# => { :foo => "...", :bar => false, ... }
end
You can then work with objects within the collection and access their attributes. You can also modify objects and
persist the changes back to the collection (worksheet):
# Fetch the second data row from the spreadsheet
record = collection.records[1]
record[:foo] = "other"
# Persist change of value to worksheet
collection.save
# or more explicitly collection.save(record)
If you want to reset changes made to your records, just use the reload method:
# Fetch the second data row from the spreadsheet
record = collection.records[1]
record[:foo] = "other"
# Reset unsaved changes
collection.reload
You may also come across situations where you need access to 'meta' information associated with the collection.
Use the 'cell' method to access arbitrary data points:
# Accesses row 1, column 2 within the worksheet
collection.cell(1, 2) => "foo"
Accessing Your Sheets
To access your Sheets, you'll need to authentication with Google's Google Drive service. There are several ways to do this, all described in the google_drive gem's documentation.
Once you have a successfully authentication Google Drive session, you can access
your sheets by passing your session into SheetMapper:
Does nesquena/sheet_mapper have a project website?
No homepage URL was recorded for nesquena/sheet_mapper in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
How many stars does nesquena/sheet_mapper have?
nesquena/sheet_mapper has 118 GitHub stars — refresh the page for the live number, or check github.com/nesquena/sheet_mapper. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is nesquena/sheet_mapper open source?
Yes — nesquena/sheet_mapper ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/nesquena/sheet_mapper.
What is nesquena/sheet_mapper?
nesquena/sheet_mapper (nesquena/sheet_mapper) is a Ruby project on GitHub. From the project's own README: Map spreadsheet rows to a ruby objects
Where do I read more about nesquena/sheet_mapper?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/nesquena/sheet_mapper is the definitive source.
Read full README in the tab above.
Curious whether sheet_mapper is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about sheet_mapper.