Class: GoogleDrive::Spreadsheet

Inherits:
File
  • Object
show all
Includes:
Util
Defined in:
lib/google_drive/spreadsheet.rb

Overview

A spreadsheet.

Use methods in GoogleDrive::Session to get GoogleDrive::Spreadsheet object.

Constant Summary collapse

SUPPORTED_EXPORT_FORMAT =
Set.new(%w(xlsx csv pdf))

Constants included from Util

Util::EXT_TO_CONTENT_TYPE, Util::IMPORTABLE_CONTENT_TYPE_MAP

Instance Attribute Summary

Attributes inherited from File

#api_file

Instance Method Summary collapse

Methods included from Util

concat_url, construct_and_query, construct_query, convert_params, delegate_api_methods, encode_query, get_singleton_class, h

Methods inherited from File

#acl, #acl_feed_url, #available_content_types, #copy, #delete, #download_to_file, #download_to_io, #download_to_string, #export_as_file, #export_as_string, #export_to_io, #human_url, #initialize, #inspect, #reload_metadata, #rename, #resource_id, #resource_type, #title, #update_from_file, #update_from_io, #update_from_string

Constructor Details

This class inherits a constructor from GoogleDrive::File

Instance Method Details

#add_worksheet(title, max_rows = 100, max_cols = 20) ⇒ Object

Adds a new worksheet to the spreadsheet. Returns added GoogleDrive::Worksheet.



70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/google_drive/spreadsheet.rb', line 70

def add_worksheet(title, max_rows = 100, max_cols = 20)
  xml = <<-"EOS"
        <entry xmlns='http://www.w3.org/2005/Atom'
               xmlns:gs='http://schemas.google.com/spreadsheets/2006'>
          <title>#{h(title)}</title>
          <gs:rowCount>#{h(max_rows)}</gs:rowCount>
          <gs:colCount>#{h(max_cols)}</gs:colCount>
        </entry>
      EOS
  doc = @session.request(:post, worksheets_feed_url, data: xml)
  Worksheet.new(@session, self, doc.root)
end

#document_feed_urlObject

URL of feed used in the deprecated document list feed API.



33
34
35
# File 'lib/google_drive/spreadsheet.rb', line 33

def document_feed_url
  'https://docs.google.com/feeds/documents/private/full/' + CGI.escape(resource_id)
end

#keyObject

Key of the spreadsheet.



22
23
24
# File 'lib/google_drive/spreadsheet.rb', line 22

def key
  id
end

#spreadsheet_feed_urlObject

Spreadsheet feed URL of the spreadsheet.



38
39
40
# File 'lib/google_drive/spreadsheet.rb', line 38

def spreadsheet_feed_url
  'https://spreadsheets.google.com/feeds/spreadsheets/private/full/' + id
end

#worksheet_by_gid(gid) ⇒ Object

Returns a GoogleDrive::Worksheet with the given gid.

Returns nil if not found.



64
65
66
67
# File 'lib/google_drive/spreadsheet.rb', line 64

def worksheet_by_gid(gid)
  gid = gid.to_s
  worksheets.find { |ws| ws.gid == gid }
end

#worksheet_by_title(title) ⇒ Object

Returns a GoogleDrive::Worksheet with the given title in the spreadsheet.

Returns nil if not found. Returns the first one when multiple worksheets with the title are found.



57
58
59
# File 'lib/google_drive/spreadsheet.rb', line 57

def worksheet_by_title(title)
  worksheets.find { |ws| ws.title == title }
end

#worksheetsObject

Returns worksheets of the spreadsheet as array of GoogleDrive::Worksheet.



43
44
45
46
47
48
49
50
51
# File 'lib/google_drive/spreadsheet.rb', line 43

def worksheets
  doc = @session.request(:get, worksheets_feed_url)
  if doc.root.name != 'feed'
    fail(GoogleDrive::Error,
         "%s doesn't look like a worksheets feed URL because its root is not <feed>." %
         worksheets_feed_url)
  end
  doc.css('entry').map { |e| Worksheet.new(@session, self, e) }.freeze
end

#worksheets_feed_urlObject

URL of worksheet-based feed of the spreadsheet.



27
28
29
30
# File 'lib/google_drive/spreadsheet.rb', line 27

def worksheets_feed_url
  'https://spreadsheets.google.com/feeds/worksheets/%s/private/full' %
    id
end