触发Google电子表格中的python代码?

时间:2014-04-08 02:25:36

标签: python google-apps-script google-sheets

在excel中,您可以使用pyxll使用python创建用户定义的函数。我一直在转向Google电子表格并使用他们的Google应用程序脚本,但是这些库在python中更大更好,我希望有一种方法可以使用Google电子表格中的python构建用户定义的函数。有一些方法可以将python与像gspread这样的Google表格进行交互。有没有办法在谷歌应用程序引擎上运行python然后获取表格来触发该代码?还有哪些方法可以从Google电子表格中触发python代码?

3 个答案:

答案 0 :(得分:2)

您应该在GAE中创建一个Web服务,然后可以使用Google Apps Script UrlFetch类调用该服务。 这就是我通常将第三方应用程序与Apps Script App集成的方式。

在电子表格容器脚本中,您可以创建类似

的代码
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
}

以上代码可以根据某些条件由Apps脚本中的时间驱动触发器触发

答案 1 :(得分:1)

一种方法是让一些代码一直读取电子表格,然后在满足条件时运行其他代码。

如果没有GAE,您可以使用以下代码:

#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应用中运行代码,那么您可以发布电子表格并构建电子表格的网址(JSON),如下所示:https://spreadsheets.google.com/feeds/list/(spreadsheetkey)/od6/public/values?alt=json 可以通过app访问此地址,可以读取单元格值,并可以触发某些代码。

这两种方法的方法是相同的:一些代码监视电子表格,当满足某些条件时,会触发其他一些代码。当条件纯粹来自Google电子表格时,我不确定如何运行代码(在GAE应用程序中)。

答案 2 :(得分:1)

将您的python代码部署为云功能: NumericUpDown

然后使用如上所示的URL Fetch调用函数。