如何使用 python GSPREAD 找到 google 价差 sheet 的第一个空行?

How to find the first empty row of a google spread sheet using python GSPREAD?

我正在努力编写代码来找到 google sheet.

的第一个空行

我正在使用来自 github 的 gspread 包。com/burnash/gspread

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

我目前刚刚导入模块并打开作品sheet

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行sheet有一个函数,这意味着每次旧的空行被填充时,它会找到下一个空行 See here

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

def next_available_row(worksheet):
    str_list = list(filter(None, worksheet.col_values(1)))
    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)
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 之间存在一些映射问题,需要我将字母表转换为字符串。

此替代方法解决了已接受答案的问题,方法是考虑可能已跳过值的行(例如文档中花哨的 header 部分)以及对第一个 N[ 进行采样=14=] 列:

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

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

len(sheet.get_all_values()) + 1

会给你第一个空闲行

get_all_values returns sheet 数据的二维列表。每个嵌套列表都是一行,因此二维列表的长度是包含任何数据的行数。

类似的问题是第一个免费专栏:

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)
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)