Я пытаюсь запустить функцию python с помощью Gspread из excel через xlwings. Что касается контекста, я делаю это, чтобы иметь возможность импортировать данные из базы данных листа Google в мой файл Excel в твердой копии. Функция отлично работает, когда я запускаю ее из консоли Python, но, похоже, не работает, когда я запускаю ее из Excel через макрос с помощью RunPython.
Точнее, я добавил флаги, чтобы увидеть, в чем проблема:
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. Если у вас есть представление о том, в чем может быть проблема и как я могу ее решить, это было бы здорово!
Спасибо вам за помощь!
RunPython
может отличаться, и вы пока не можете установить его из xlwings, поэтому вам нужно использовать полный путь для вашего json-файла. - person Felix Zumstein   schedule 06.06.2017os.path.join(os.path.dir(__file__), 'file_name')
. - person Felix Zumstein   schedule 07.06.2017