Google Sheet Api写入错误

时间:2018-08-09 16:34:55

标签: python google-sheets google-sheets-api google-api-python-client

我无法通过python将数据写入Google表格。我做了类似Google Sheets Api示例中的所有操作,但仍然无法正常工作。这是我的项目:

from __future__ import print_function
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file as oauth_file, client, tools

SCOPES = ['https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.file']

SAMPLE_SPREADSHEET_ID = 'ID'
SAMPLE_RANGE = 'Sheet2!A1:A10'

def main():
    store = oauth_file.Storage('token.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
    creds = tools.run_flow(flow, store)

service = build('sheets', 'v4', http=creds.authorize(Http()))

values = {'values': [['one','two','three']]}
result = service.spreadsheets().values().append(
    spreadsheetId=SAMPLE_SPREADSHEET_ID, range=SAMPLE_RANGE,
    valueInputOption='RAW',
    body=values).execute()
print('{0} cells updated.'.format(result.get('updatedCells')));

if __name__ == '__main__':
    main()

这给了我这个错误:

C:\Users\Victor\Anaconda3\python.exe "C:/Users/Victor/Desktop/NEW try/try1.py"
Traceback (most recent call last):
File "C:/Users/Victor/Desktop/NEW try/try1.py", line 31, in <module>
    main()
    File "C:/Users/Victor/Desktop/NEW try/try1.py", line 27, in main
    body=values).execute()
    File "C:\Users\Victor\Anaconda3\lib\site-packages\googleapiclient\_helpers.py", line 130, in positional_wrapper
    return wrapped(*args, **kwargs)
File "C:\Users\Victor\Anaconda3\lib\site-packages\googleapiclient\http.py", line 842, in execute
    raise HttpError(resp, content, uri=self.uri)
    googleapiclient.errors.HttpError: <HttpError 403 when requesting https://sheets.googleapis.com/v4/spreadsheets/1RaeZ4QpT3-ZCcIfBDKdtQJt0WDJKiLnBsB3dTC2PoGg/values/Sheet2%21A1%3AA10:append?valueInputOption=RAW&alt=json returned "Request had insufficient authentication scopes.">

    Process finished with exit code 1

我固定了一个截图,证明我在api中拥有所有权限。 Google API 预先谢谢你。

1 个答案:

答案 0 :(得分:0)

据我了解,退出代码1 "means there was some issue / problem which caused the program to exit."尝试调试代码,好像缩进了。第11行和第25行之间的所有内容都应至少有一个缩进,因此应将其视为main()函数的一部分。像这样:

from __future__ import print_function
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file as oauth_file, client, tools

SCOPES = ['https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.file']

SAMPLE_SPREADSHEET_ID = 'ID'
SAMPLE_RANGE = 'Sheet2!A1:A10'

def main():
    store = oauth_file.Storage('token.json')
    creds = store.get()
    if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
        creds = tools.run_flow(flow, store)

    service = build('sheets', 'v4', http=creds.authorize(Http()))

    values = {'values': [['one','two','three']]}
    result = service.spreadsheets().values().append(
        spreadsheetId=SAMPLE_SPREADSHEET_ID, range=SAMPLE_RANGE,
        valueInputOption='RAW',
        body=values).execute()
    print('{0} cells updated.'.format(result.get('updatedCells')));

if __name__ == '__main__':
    main()

此外,Python的Google Sheets API快速入门会经常更新,因此我将尝试使用新代码featured here。让我们知道修复缩进或决定使用Google的更新代码后会发生什么。