def _get_spreadsheet_headers(client, spreadsheet_key, worksheet_id): """Returns a list of headers (the first line of the spreadsheet). Will be in the order they appear in the spreadsheet. """ headers = [] query = CellQuery() query.max_row = '1' query.min_row = '1' feed = client.GetCellsFeed(spreadsheet_key, worksheet_id, query=query, visibility='public', projection='values') # Wish python had a do-while... while True: for entry in feed.entry: headers.append(entry.content.text) # Get the next set of cells if needed. next_link = feed.GetNextLink() if next_link: feed = client.Get(next_link.href, converter=SpreadsheetsCellsFeedFromString) else: break return headers
def get_sheet_headers(self, key, sheet_id, client=None): query = CellQuery() query.max_row = "1" query.return_empty = "true" if not client: client = self._get_client() header_xml = client.GetCellsFeed(key, sheet_id, query=query) # setups our cleaning regex REGEX_CLEAN = "([^\s\?]*)" clean = re.compile(REGEX_CLEAN, re.DOTALL) # squirrels away our header data ret = [] for i, v in enumerate(header_xml.entry): if v.cell.inputValue: ret.append( { "index": i, "friendly": v.cell.inputValue, "programmatic": "".join(clean.findall(v.cell.inputValue.lower().replace("_", ""))), } ) return ret
def headers(self): """ Return the name of all headers currently defined for the table. """ if self._headers is None: query = CellQuery() query.max_row = '1' feed = self._service.GetCellsFeed(self._ss.id, self.id, query=query) self._headers = feed.entry return [normalize_header(h.cell.text) for h in self._headers]
def __init__(self, client, key, worksheet_id, start_row, end_row): self.entries = {} self.batch = SpreadsheetsCellsFeed() self.max_col = 0 self.max_row = 0 self.client = client query = CellQuery() query.return_empty = 'true' query.min_row = str(start_row) query.max_row = str(end_row) self.cells = client.GetCellsFeed(key, worksheet_id, query=query) self.register_all(self.cells.entry)