这是我的代码:
from gspread_asyncio import AsyncioGspreadClientManager
import io
import csv
from google.oauth2 import service_account
from gspread.exceptions import SpreadsheetNotFound
async def upload_file_to_gsheets(credentials_path, csv_string, spreadsheet_name):
try:
credentials = service_account.Credentials.from_service_account_file(credentials_path,
scopes=[
'https://www.googleapis.com/auth',
'https://www.googleapis.com/auth/drive'])
agcm = AsyncioGspreadClientManager(lambda: credentials)
gc_client = await agcm.authorize()
try:
spreadsheet = await gc_client.open(spreadsheet_name)
except SpreadsheetNotFound:
spreadsheet = await gc_client.create(spreadsheet_name)
.
worksheet = await spreadsheet.get_worksheet(0)
csv_file = io.StringIO(csv_string)
reader = csv.reader(csv_file)
values_list = list(reader)
await worksheet.update('A1', values_list)
spreadsheet_url = spreadsheet.url
return spreadsheet_url
except Exception as error:
print(error)
return
它返回创建的电子表格的链接;但当我试图阅读它时,我没有得到这样做的许可。我该如何解决这个问题?我应该更改 Google Cloud Console 中的访问设置还是可以使用代码来完成?
我尝试更改 https://console.cloud.google.com 的权限,但没有成功。我还尝试删除并再次创建密钥(也不起作用)。我该如何解决这个问题?我是 python、Google Drive 和 Goggle Sheets API 的新手。请帮忙:)
我如何解决我的问题:
# Asynchronously create and initialize the Google Drive API client.
drive_service = build('drive', 'v3', credentials=credentials)
# Define the new permission.
user_permission = {
'type': 'user',
'role': 'writer', # 'owner' is not allowed for service accounts.
'emailAddress': 'example.com' # Email of the user to share with.
}
# Grant the defined permission.
drive_service.permissions().create(
fileId=spreadsheet.id,
body=user_permission,
fields='id'
).execute()
return spreadsheet_url