Sha256: 8ea3175b15533a19b8f0c977515c22a59038ae58822a84e2998a4e3e5eb4068f

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

module GSheets
  module V3
    class WorkSheet
      def initialize(session:, grid_id: " default", id:)
        @grid_id = grid_id
        @session = session
        @id = id
      end

      def headers
        cells_first_row["feed"]["entry"].map {|e| e["content"]["$t"]}
      end

      def rows
        data_list = worksheet_as_list["feed"]["entry"]
        list = data_list.map {|entry|
          [
            "title: #{entry['title']['$t']}",
            entry["content"]["$t"]
          ].join(", ")
        }

        result = []
        list.each do |l|
          row = {}
          l.split(",").each do |elem|
            e = elem.split(":")
            row[e.first.strip.freeze] = e.last.strip.freeze
          end
          result << row
        end
        result.map(&:values)
      end

      private

      def cells_first_row
        JSON.parse(@session.get_cells(id: @id, grid_id: @grid_id, options: header_row_options).body)
      end

      def worksheet_as_list
        JSON.parse(@session.get_list(id: @id, grid_id: @grid_id).body)
      end

      def header_row_options
        ["min-row=1", "max-row=1"]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
g_sheets-0.2.0 lib/g_sheets/v3/work_sheet.rb