所以我一直在嘗試用python創建一個新的空白google電子表格。我使用的是我在網上找到的一個Python腳本(還添加了一些我自己的修改),但我就是不能讓它按照我想要的方式作業。我以前從來沒有真正使用過python,也沒有使用過google電子表格,所以我有點糊涂了!!!!!!。目前的問題是,每當我運行代碼時,它似乎在作業,但當我復制/粘貼新生成的谷歌電子表格的URL時,我甚至沒有權限查看它。這是我的代碼....,提前感謝你!!
""
然后再運行。
---------------
1. 如果尚未完成,請啟用Google Sheets API
并檢查你的專案的配額,網址為
https://console.developers.google.com/apis/api/sheets
2. 通過運行以下程式安裝Google APIs的Python客戶端庫
`pip install --upgrade google-api-python-client`。
""
from pprint import pprint
from googleapiclient import discovery
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from google.oauth2 import service_account
# TODO: 更改下面的占位符以生成認證憑證。參見
# https://developers.google.com/sheets/quickstart/python#step_3_set_up_the_sample
#
# 使用以下作用域之一進行授權:
# 'https://www.googleapis.com/auth/drive'/span>
# 'https://www.googleapis.com/auth/drive.file'/span>
# 'https://www.googleapis.com/auth/spreadsheets'/span>
SERVICE_ACCOUNT_FILE ='client_secret.json'
f = open('client_secret.json','r')。
print(f.readline())
f.close()
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"/span>, "https://www.googleapis.com/auth/drive"/span>]
credentials = None 資格證書 = service_account.com.cn
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
服務 = discovery.build('sheet', 'v4', credentials=credentials)
spreadsheet_body = {
# TODO: 在請求體中添加所需的條目。
}
request = service.spreadsheets().create(body=spreadsheet_body)
回應 = request.execute()
# TODO: 更改下面的代碼以處理`response` dict:
pprint(response)
uj5u.com熱心網友回復:
問題是,表單是以serviceaccount作為所有者創建的,而不是在你的個人Gmail賬戶下。
有2種選擇:
- 糟糕的方法是讓您的個人帳戶訪問生成的 GS 表格。這樣做的問題是,服務賬戶仍將是所有者。我不會告訴你如何做到這一點,因為這絕對是一個錯誤的方法。
- 正確的方法是在創建 API 客戶端時使用適當的憑證。這一點在這篇文章中有詳細解釋。
請特別注意創建憑證物件的那段代碼。
creds = None
# 檔案token.json存盤用戶的訪問和重繪 令牌,并且是
# 當授權流程完成第一個時自動創建。
# time.。
if os.path.exists('token.json')。
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# 如果沒有可用的(有效)證書,讓用戶登錄。
if not creds or not creds.valid。
if creds and creds.expired and creds.refresh_token。
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# 為下次運行保存憑證。
with open('token.json', 'w) as token:
token.write(creds.to_json())
服務 = build('sheet', 'v4', credentials=creds)
正如你所看到的,這段代碼并沒有直接從serviceacocunt中創建一個憑證物件。相反,它要求獲得使用你的個人 Gmail 帳戶來呼叫 API 的權限。
請注意,如果你的Gmail帳戶是在一個人的情況下創建的,那么你就不能使用它。
請注意,如果您擁有 GSuite/Workspace 帳戶,您可以使用impersonation代替。這實際上是首選方法,但只適用于上述GSuite/Workspace帳戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331355.html
標籤:
