Как обновлять Google лист с новым результатом каждый раз, когда запускается скрипт Python?
У меня есть скрипт Python при каждом запуске, он возвращает новое значение. Затем мне нужно добавить эти значения в лист Google. Таким образом, каждый день результаты сценариев будут добавляться в новую строку. Я пытался использовать "pygsheet" lib, но не могу обработать добавление в новую строку для каждого дня. Как я могу добавить данные в последнюю пустую строку?
4 ответа
Есть несколько способов добиться этого с помощью листов. insert_rows
можно добиться этого в одну строку.
wks.insert_rows(wks.rows, values=[daily_value], inherit=True) # here wks is the worksheet object
Если вы не хотите добавлять новую строку или хотите добавить значение в не последнюю строку, вы можете использовать append_table
Предполагая, что это единственные данные в таблице. Здесь вы должны убедиться, что на вашем листе достаточно строк, чтобы соответствовать новому значению.
wks.append_table(values=[daily_value])
Сначала получите все значения в электронной таблице. Вам необходимо указатьinclude_tailing_empty_rows
а также include_tailing_empty
в качестве False
, так что пустые строки не будут включены в подсчет
new_row = ['firstname', 'lastname', 'Email', 'Number']
worksheet = gc.open('Sign Up').sheet1
cells = worksheet.get_all_values(include_tailing_empty_rows=False, include_tailing_empty=False, returnas='matrix')
last_row = len(cells)
worksheet = worksheet.insert_rows(last_row, number=1, values= new_row)
insert_rows
добавляет список "new_row" в позицию сразу после "last_row".
Вы можете проверить другие атрибуты worksheet
здесь https://pygsheets.readthedocs.io/en/stable/worksheet.html
# Connect with Google Sheet
# pip install pygsheets
# append data on google sheet with existing data Final working
import pygsheets
import pandas as pd
#Change Path : excel file path
df=pd.read_excel(r"C:\Users\Ankur\Desktop\Google Sheet\CET Not Open.xlsx")
#Change Path : Your Key File Path Json file for Google Sheet API
path=r'C:\Users\Ankur\Desktop\Google Sheet\our-brand-301715-306ddc60d5ce.json'
gc = pygsheets.authorize(service_account_file=path)
# Change Sheet Name : PythonDB to your googlesheet name
sh=gc.open("PythonDB")
wk1=sh[0]
cells = wk1.get_all_values(include_tailing_empty_rows=None, include_tailing_empty=False, returnas='matrix')
last_row = len(cells)
if last_row>1:
wk1.set_dataframe(df,(last_row+1,1))
wk1.delete_rows(last_row+1)
else:
wk1.set_dataframe(df,(1,1))
print("Data inserted successfully....")
Следующий фрагмент кода добавит данные в последнюю непустую строку.
#open the google spreadsheet
sh = gc.open('name of the google sheet')
#select the first sheet
wks = sh[0]
#retrieve all rows of the worksheet
cells = wks.get_all_values(include_tailing_empty_rows=False, include_tailing_empty=False, returnas='matrix')
#extract all non empty rows
nonEmptyRows = []
for i in cells:
if i != []:
nonEmptyRows.append(i)
#calculating the length
countOfnonEmptyRows = len(nonEmptyRows)
type(countOfnonEmptyRows)
#defining the data
ls = ['G', 'H', 'I']
#inserting data
wks.insert_rows(countOfnonEmptyRows, values=ls, inherit=True) # here wks is the worksheet object