我试图通过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文件位于同一工作目录中。如果您对可能出现的问题以及如何解决问题有所了解,那就太棒了!
感谢您的帮助!
答案 0 :(得分:0)
由@Felix Zumstein指定,解决方案是指定“ client_secret” json文件的完整路径,可能使用os.path.dirname(os.path.abspath(file))