使用Gread从excel通过xlwings启动Python函数

时间:2017-06-06 14:44:48

标签: python xlwings gspread

我试图通过xlwings使用来自excel的Gspread启动python函数。对于上下文,我这样做是为了能够从谷歌表格数据库导入数据'进入我的硬拷贝excel文件。当我从Python控制台启动它时,该功能非常有效,但是当我使用RunPython通过宏从Excel启动它时,它似乎无法工作。

更确切地说,我添加了标记以查看问题所在:

def main():

 wb = xw.Book.caller()
 wb.sheets['Dashboard'].range('J3').value=0#used as a flag

 import gspread
 from oauth2client.service_account import ServiceAccountCredentials
 wb.sheets['Dashboard'].range('J3').value=1.5#used as a flag
 # use creds to create a client to interact with the Google Drive API
 scope = ['https://spreadsheets.google.com/feeds']
 wb.sheets['Dashboard'].range('J3').value=1.6#used as a flag
 creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
 wb.sheets['Dashboard'].range('J3').value=1.7#used as a flag
 client = gspread.authorize(creds)

 wb.sheets['Dashboard'].range('J3').value=1#used as a flag

我在尝试运行程序后在J3单元格中获得的值是1.6,这意味着导致问题的行是:

creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)

文件client_secret.json与python脚本和excel文件位于同一工作目录中。如果您对可能出现的问题以及如何解决问题有所了解,那就太棒了!

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

由@Felix Zumstein指定,解决方案是指定“ client_secret” json文件的完整路径,可能使用os.path.dirname(os.path.abspath(file))