如何从Google表格触发Python代码?

13 投票
4 回答
28732 浏览
提问于 2025-04-18 01:48

在Excel中,你可以使用pyxll来创建用户自定义函数,这样就能用Python编程了。我最近开始使用Google表格,并且在用他们的Google应用脚本,但我发现Python的库要大得多、功能也更强,我希望能在Google表格中用Python来构建用户自定义函数。虽然有一些方法可以让Python和Google表格互动,比如gspread,但我想知道有没有办法在Google应用引擎上运行Python代码,然后让表格触发这些代码?还有其他什么方法可以从Google表格触发Python代码呢?

4 个回答

0

你可以使用 APP SCRYPT 来把文件保存到谷歌云盘的文件夹里。上传文件到我的谷歌云盘,使用谷歌应用脚本

同时,你可以用Python来监控你电脑上的一个文件夹,这个文件夹和谷歌云盘的桌面同步功能连接在一起。你可以使用谷歌云盘桌面版来同步你电脑上的文件夹和云盘中的文件夹。然后,使用Watch Python来观察这个文件夹的变化。

7

把你的Python代码部署成一个云函数:https://cloud.google.com/functions/docs/writing/http

然后像上面所示的那样,用URL Fetch来调用你的函数。

9

你应该在谷歌应用引擎(GAE)上创建一个网络服务,这样就可以通过谷歌应用脚本中的 UrlFetch 类来调用它。
我通常是这样做的,以便将第三方应用和应用脚本结合起来。

在一个电子表格的容器脚本中,你可以写出类似下面的代码:

function myFunction(){
  //your code
  //Call the webservice
 var response = UrlFetchApp.fetch('my_webservice_url', {payload:'...', method:'POST'});
 Logger.log(response.getContentText());
 // your code based on response
}

上面的代码可以通过应用脚本中的时间驱动触发器,根据一些条件来触发执行。

2

一种方法是写一些代码,让它一直监控电子表格,然后在满足某个条件时再运行其他代码。

如果不使用GAE(Google App Engine),你可以用下面的代码:

#http://code.google.com/p/gdata-python-client/downloads/list
import gdata.spreadsheet.service as s

spreadsheet_key = 'spreadsheetkey'# https://docs.google.com/spreadsheet/ccc?key=<spreadsheet key>&usp=sharing#gid=0

worksheet_key = 'od6' #first tab
gd_client = s.SpreadsheetsService(spreadsheet_key, worksheet_key)
gd_client.email = 'user@gmail.com'
gd_client.password = 'password'
gd_client.ProgrammaticLogin()
list_feed = gd_client.GetListFeed(spreadsheet_key, worksheet_key)
for entry in list_feed.entry:
    #read cell values and then do something if the condition is met

如果你想让电子表格在GAE应用中运行代码,你可以先把电子表格发布出来,然后像这样构造电子表格的URL(JSON格式): https://spreadsheets.google.com/feeds/list/(spreadsheetkey)/od6/public/values?alt=json。这个地址可以通过应用访问,单元格的值可以被读取,并且可以触发一些代码。

这两种方法的思路是一样的:都有一些代码在监控电子表格,当满足某个条件时,就会触发其他代码。我不太确定如何能在条件满足时,仅仅通过Google电子表格来运行代码(比如在GAE应用中)。

撰写回答