Как связать форму Google с таблицей Google с помощью Python? - PullRequest
2 голосов
/ 03 августа 2020

Вот мои настройки и то, что я хочу выполнить sh:

  • В настоящее время у меня есть форма Google, настроенная для пользователей, чтобы отправлять информацию, которая затем регистрируется в Google Sheet.
  • Затем я использую PyDrive для сохранения содержимого Google Sheet в виде csv.
  • Pandas затем считывает этот csv и удаляет данные в csv на основе определенных критериев.
  • После этого я использую PyDrive для повторной загрузки "фиксированного" csv в листы Google, сохраняя вместо старого.

Вот проблема:

всякий раз, когда я это делаю , он разрывает связь между Google Sheet и Google Form. Есть ли способ сохранить эту ссылку или повторно связать форму и лист?

Вот фрагмент кода, с которым я играл:

submissions_data = drive.CreateFile({'id': ext['SUBMISSIONS_ID']})
submissions_data.GetContentFile("data.csv", mimetype = "text/csv")
df = pd.read_csv("data.csv")
df.drop([0],inplace=True)
df.to_csv("data.csv", index=False)
submissions_data.SetContentFile("data.csv")`

Желательно, чтобы я хотелось бы найти способ сделать это с помощью PyDrive, но на этом этапе все будет работать. Любая помощь приветствуется! Спасибо!

1 Ответ

2 голосов
/ 03 августа 2020

Используйте API Google Диска с oauth2client и gspread для непосредственного обновления существующей электронной таблицы.

  1. Go в консоли API Google . Создайте новый проект. Нажмите Включить API.
  2. Включите API Google Диска . Создайте учетные данные для веб-сервера для доступа к данным приложения.
  3. Назовите учетную запись службы и назначьте ей роль редактора проекта.
  4. Загрузите файл JSON.
  5. Копировать файл JSON в каталог кода и переименуйте его в client_secret. json
  6. Найдите client_email внутри client_secret. json. Вернувшись в электронную таблицу, нажмите кнопку «Поделиться» в правом верхнем углу и вставьте клиентский адрес электронной почты в поле «Люди», чтобы дать ему права на редактирование. Нажмите «Отправить».
pip install gspread oauth2client
#spreadsheet.py
import gspread
from oauth2client.service_account import ServiceAccountCredentials


# use creds to create a client to interact with the Google Drive API
scope = ['https://spreadsheets.google.com/feeds']
creds =   ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)

# Find a workbook by name and open the first sheet
# Make sure you use the right name here.
sheet = client.open("Copy of Legislators 2017").sheet1

# Extract and print all of the values
list_of_hashes = sheet.get_all_records()
print(list_of_hashes)

Вы можете писать в электронную таблицу, изменив определенную c ячейку:

sheet.update_cell(1, 1, "I just wrote to a spreadsheet using Python!")

Или вы можете вставить строку в электронная таблица:

row = ["I'm","inserting","a","row","into","a,","Spreadsheet","with","Python"]
index = 1
sheet.insert_row(row, index)

См. справочник API gspread , чтобы получить полную информацию об этих функциях, а также о нескольких десятках других.

...