如何使用python GSPREAD找到谷歌电子表格的第一个空行?

时间:2016-11-24 08:29:18

标签: python python-2.7 gspread

我正在努力编写能够找到google工作表第一个空行的代码。

我正在使用github.com/burnash/gspread

中的gspread软件包

如果有人可以提供帮助,我会很高兴:)

我目前刚刚导入了模块并打开了工作表

scope = ['https://spreadsheets.google.com/feeds']

credentials = ServiceAccountCredentials.from_json_keyfile_name('ddddd-61d0b758772b.json', scope)

gc = gspread.authorize(credentials)

sheet = gc.open("Event Discovery")
ws = sheet.worksheet('Event Discovery')

我想找到第1158行,它是带有函数的工作表的第一个空行,这意味着每次填充旧的空行时,它将找到下一个空行 See here

5 个答案:

答案 0 :(得分:14)

我用以下方法解决了这个问题:

def next_available_row(worksheet):
    str_list = filter(None, worksheet.col_values(1))  # fastest
    return str(len(str_list)+1)

scope = ['https://spreadsheets.google.com/feeds']
credentials = ServiceAccountCredentials.from_json_keyfile_name('auth.json', scope)
gc = gspread.authorize(credentials)
worksheet = gc.open("sheet name").sheet1
next_row = next_available_row(worksheet)

#insert on the next available row

worksheet.update_acell("A{}".format(next_row), somevar)
worksheet.update_acell("B{}".format(next_row), somevar2)

答案 1 :(得分:1)

此替代方法通过考虑可能具有跳过值的行(例如文档中的奇特标题部分)以及对前 N 列进行采样来解决已接受答案的问题:

def next_available_row(sheet, cols_to_sample=2):
  # looks for empty row based on values appearing in 1st N columns
  cols = sheet.range(1, 1, sheet.row_count, cols_to_sample)
  return max([cell.row for cell in cols if cell.value]) + 1

答案 2 :(得分:0)

def find_empty_cell():
    alphabet = list(map(chr, range(65, 91)))
    for letter in alphabet[0:1]: #look only at column A and B
        for x in range(1, 1000):
            cell_coord = letter+ str(x)
            if wks.acell(cell_coord).value == "":
                return(cell_coord)

我使用这种草率函数来找到第一个空单元格。我找不到空行,因为其他列已经有值。

哦,2.7和3.6之间存在一些问题,需要我将字母表转换为字符串。

答案 3 :(得分:0)

如果您可以指望所有以前填写的行:

len(sheet.get_all_values()) + 1

将为您提供第一行空白

get_all_values返回工作表数据的二维列表。每个嵌套列表都是一行,因此2D列表的长度是包含任何数据的行数。

类似的问题是第一个自由列:

from xlsxwriter.utility import xl_col_to_name
# Square 2D list, doesn't matter which row len you check
column_count = len(sheet.get_all_values()[0]) 
column = xl_col_to_name(column_count)

答案 4 :(得分:0)

import pygsheets        
gc = pygsheets.authorize(service_file='************************.json')
ss = gc.open('enterprise_finance')
ws = ss[0]
row_count = len(ws.get_all_records()) + 2
ws.set_dataframe(raw_output,(row_count,1), copy_index = 'TRUE', copy_head = 'TRUE')
ws.delete_rows(row_count , number=1)