不幸的是,您确实无法在 Google 表格中按下按钮来启动本地 Python 脚本——Google 表格/您的浏览器无法以这种方式访问您的本地文件和程序。
您可以创建一个运行Google Apps Script (GAS) 的按钮。这是一些基于 JavaScript 的代码,附加到电子表格,由 Google 托管/运行。 Here's 按键运行教程。
如果您可以将脚本移植到 GAS 中,这是一种解决方案。
如果你想将脚本保留在 Python 中,你基本上需要部署它,然后使用 GAS 调用你的 Python 脚本。我能想到的最简单的方法(不是超级简单,但完全可行!)如下:
1.将您的 Python 脚本变成 API。
使用Flask 或FastAPI 之类的东西来设置您自己的API。目的是当访问某个 URL 时,它将触发您的 Python 程序运行一个完成所有工作的函数。使用 FastAPI,它可能看起来像这样:
from fastapi import FastAPI
app = FastAPI()
def main():
print("Access Google Sheet via API...")
# your code here
print("Upload to JIRA via API...")
# your code here
@app.get("/")
def root():
main()
return {"message": "Done"}
这里,“/”是 API 端点。当您访问(或发出“获取”请求)到已部署应用程序的 URL 时,只需以“/”结尾,root 函数将被调用,它会调用您的 main 函数。 (您可以设置不同的 URL 结尾来做不同的事情)。
我们可以在本地进行测试。如果您按照 FastAPI 的设置说明进行操作,您应该能够运行命令 uvicorn main:app --reload,它会在 http://127.0.0.1:8000 启动服务器。如果您在浏览器中访问该 URL,脚本应该会运行,并且“完成”消息应该会出现在您的浏览器中。
2。部署您的 Python 应用
有许多服务可以托管您的 Python 程序,例如 Heroku 或 Google Cloud。他们可能会提供免费试用,但这通常需要花钱。 FastAPI 有关于 deploying to Deta 的说明,目前似乎有免费套餐。
当您的应用是应用并正在运行时,应该有一个关联的网址,例如“https://1kip8d.deta.dev/”。如果您在浏览器中访问它,它将运行您的脚本并返回“完成”消息。
3.使用 GAS 从 Google 表格中访问您的 Python API
最后一步是使用 GAS “点击”该 URL,而不是在浏览器中手动访问它。在tutorial mentioned above 之后,创建一个链接到您的电子表格的 GAS 脚本,以及一个“分配”给您的脚本的按钮。脚本将如下所示:
function myFunction() {
var response = UrlFetchApp.fetch("https://1kip8d.deta.dev/");
Logger.log(response.getContentText());
}
现在,只要您按下按钮,GAS 就会访问该 URL,这将导致您的 Python 脚本执行。