如何制作一个生成动态 google 表格的烧瓶网站
How to make a flask website that generates dynamic google sheets
我正在帮助一个组织,他们希望有一个网站,您可以在其中输入一些数字,并且 Google Sheets link 应该出现在数字是放入一些公式给出结果(即如果你输入 5, 5, 3; (Num1 + Num2) * num3
它会显示一个 table 其中前两个数字相加然后乘以第三个:
Num1 Num2 Num2 Result
5 5 3 30
我已经搜索了 GitHub 和互联网,但我似乎找不到可以 create Google Sheet将给定数据输入公式的网站。我发现的大多数东西都使用了 gsheet API 并且只修改了现有的 sheet。我找到了一个名为 xlsxwriter 的 Python (Flask) 库,我想知道是否有任何方法可以将 .xlsx
转换为在线 Google Sheet 或者是否可以从我的网站制作 Google Sheet。
(我的网站目前在 Flask 中,但因为我实际上没有后端。如果有人知道另一个 Web 框架中的库,我愿意切换。)
谢谢你,约翰 D
也许我在这里遗漏了一些东西,但是常规 Google 工作表 API(可用于 Python)允许您创建具有指定标题的空白电子表格。
spreadsheet = {
'properties': {
'title': title
}
}
spreadsheet = service.spreadsheets().create(body=spreadsheet,
fields='spreadsheetId').execute()
print('Spreadsheet ID: {0}'.format(spreadsheet.get('spreadsheetId')))
- https://developers.google.com/sheets/api/guides/create
- https://github.com/gsuitedevs/python-samples/blob/master/sheets/snippets/spreadsheet_snippets.py
- https://developers.google.com/sheets/api/quickstart/python
这是一个基于 Google 快速入门示例的更完整示例:
from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
# If modifying these scopes, delete the file token.pickle! Adjust scopes as needed
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
def main():
creds = None
# The file token.pickle stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('sheets', 'v4', credentials=creds)
# Call the Sheets API
spreadsheet = {
'properties': {
'title': 'New Test Sheet 2'
}
}
spreadsheet = service.spreadsheets().create(body=spreadsheet,
fields='spreadsheetId').execute()
#print('Spreadsheet ID: {0}'.format(spreadsheet.get('spreadsheetId')))
spreadsheet_id = spreadsheet.get('spreadsheetId')
range_name = 'Sheet1!A1:D5'
body = {
"majorDimension": "ROWS",
"values": [
["Item", "Cost", "Stocked", "Ship Date"],
["Wheel", ".50", "4", "3/1/2016"], # new row
["Door", "", "2", "3/15/2016"],
["Engine", "0", "1", "30/20/2016"],
["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]
],
}
result = service.spreadsheets().values().update(
spreadsheetId=spreadsheet_id,
range=range_name,
body=body,
valueInputOption='USER_ENTERED'
).execute()
print(result)
if __name__ == '__main__':
main()
我正在帮助一个组织,他们希望有一个网站,您可以在其中输入一些数字,并且 Google Sheets link 应该出现在数字是放入一些公式给出结果(即如果你输入 5, 5, 3; (Num1 + Num2) * num3
它会显示一个 table 其中前两个数字相加然后乘以第三个:
Num1 Num2 Num2 Result
5 5 3 30
我已经搜索了 GitHub 和互联网,但我似乎找不到可以 create Google Sheet将给定数据输入公式的网站。我发现的大多数东西都使用了 gsheet API 并且只修改了现有的 sheet。我找到了一个名为 xlsxwriter 的 Python (Flask) 库,我想知道是否有任何方法可以将 .xlsx
转换为在线 Google Sheet 或者是否可以从我的网站制作 Google Sheet。
(我的网站目前在 Flask 中,但因为我实际上没有后端。如果有人知道另一个 Web 框架中的库,我愿意切换。)
谢谢你,约翰 D
也许我在这里遗漏了一些东西,但是常规 Google 工作表 API(可用于 Python)允许您创建具有指定标题的空白电子表格。
spreadsheet = {
'properties': {
'title': title
}
}
spreadsheet = service.spreadsheets().create(body=spreadsheet,
fields='spreadsheetId').execute()
print('Spreadsheet ID: {0}'.format(spreadsheet.get('spreadsheetId')))
- https://developers.google.com/sheets/api/guides/create
- https://github.com/gsuitedevs/python-samples/blob/master/sheets/snippets/spreadsheet_snippets.py
- https://developers.google.com/sheets/api/quickstart/python
这是一个基于 Google 快速入门示例的更完整示例:
from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
# If modifying these scopes, delete the file token.pickle! Adjust scopes as needed
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
def main():
creds = None
# The file token.pickle stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('sheets', 'v4', credentials=creds)
# Call the Sheets API
spreadsheet = {
'properties': {
'title': 'New Test Sheet 2'
}
}
spreadsheet = service.spreadsheets().create(body=spreadsheet,
fields='spreadsheetId').execute()
#print('Spreadsheet ID: {0}'.format(spreadsheet.get('spreadsheetId')))
spreadsheet_id = spreadsheet.get('spreadsheetId')
range_name = 'Sheet1!A1:D5'
body = {
"majorDimension": "ROWS",
"values": [
["Item", "Cost", "Stocked", "Ship Date"],
["Wheel", ".50", "4", "3/1/2016"], # new row
["Door", "", "2", "3/15/2016"],
["Engine", "0", "1", "30/20/2016"],
["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]
],
}
result = service.spreadsheets().values().update(
spreadsheetId=spreadsheet_id,
range=range_name,
body=body,
valueInputOption='USER_ENTERED'
).execute()
print(result)
if __name__ == '__main__':
main()