docs: def cells_dn_meta(workbook, sheet, row, col, final_dict):
      """
      Traverse all cells in a column moving downward. Primarily created for the metadata sheet, but may use elsewhere.
      Check the cell title, and switch it to.
      :param obj workbook:
      :param str sheet:
      :param int row:
      :param int col:
      :param dict final_dict:
      :return: none
      """
      logger_excel.info("enter cells_dn_meta")
      row_loop = 0
      pub_cases = ['id', 'year', 'author', 'journal', 'issue', 'volume', 'title', 'pages',
                   'reportNumber', 'abstract', 'alternateCitation']
      geo_cases = ['latMin', 'lonMin', 'lonMax', 'latMax', 'elevation', 'siteName', 'location']
      funding_cases = ["agency", "grant", "principalInvestigator", "country"]
  
      # Temp
      pub_qty = 0
      geo_temp = {}
      general_temp = {}
      pub_temp = []
      funding_temp = []
  
      temp_sheet = workbook.sheet_by_name(sheet)
  
      # Loop until we hit the max rows in the sheet
      while row_loop < temp_sheet.nrows:
          try:
              # Get cell value
              cell = temp_sheet.cell_value(row, col)
  
              # If there is content in the cell...
              if cell not in EMPTY:
  
                  # Convert title to correct format, and grab the cell data for that row
                  title_formal = temp_sheet.cell_value(row, col)
                  title_json = name_to_jsonld(title_formal)
  
                  # If we don't have a title for it, then it's not information we want to grab
                  if title_json:
  
                      # Geo
                      if title_json in geo_cases:
                          cell_data = cells_rt_meta(workbook, sheet, row, col)
                          geo_temp = compile_temp(geo_temp, title_json, cell_data)
  
                      # Pub
                      # Create a list of dicts. One for each pub column.
                      elif title_json in pub_cases:
  
                          # Authors seem to be the only consistent field we can rely on to determine number of Pubs.
                          if title_json == 'author':
                              cell_data = cells_rt_meta(workbook, sheet, row, col)
                              pub_qty = len(cell_data)
                              for i in range(pub_qty):
                                  author_lst = compile_authors(cell_data[i])
                                  pub_temp.append({'author': author_lst, 'pubDataUrl': 'Manually Entered'})
                          else:
                              cell_data = cells_rt_meta_pub(workbook, sheet, row, col, pub_qty)
                              for pub in range(pub_qty):
                                  if title_json == 'id':
                                      pub_temp[pub]['identifier'] = [{"type": "doi", "id": cell_data[pub]}]
                                  else:
                                      pub_temp[pub][title_json] = cell_data[pub]
                      # Funding
                      elif title_json in funding_cases:
                          if title_json == "agency":
                              funding_temp = compile_fund(workbook, sheet, row, col)
  
                      # All other cases do not need fancy structuring
                      else:
                          cell_data = cells_rt_meta(workbook, sheet, row, col)
                          general_temp = compile_temp(general_temp, title_json, cell_data)
  
          except IndexError as e:
              logger_excel.debug("cells_dn_datasheets: IndexError: sheet: {}, row: {}, col: {}, {}".format(sheet, row, col, e))
          row += 1
          row_loop += 1
  
      # Compile the more complicated items
      geo = compile_geo(geo_temp)
  
      logger_excel.info("compile metadata dictionary")
      # Insert into final dictionary
      final_dict['@context'] = "context.jsonld"
      final_dict['pub'] = pub_temp
      final_dict['funding'] = funding_temp
      final_dict['geo'] = geo
  
      # Add remaining general items
      for k, v in general_temp.items():
          final_dict[k] = v
      logger_excel.info("exit cells_dn_meta")
      return final_dict