Reputation: 71
I am creating a Python code that generates a sheet file in Google Docs. The file creates itself without any problems, but I can't change its editing permissions.
When I enter the following code, an error appears. Could you give me some advice?
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from google.oauth2.service_account import Credentials
creds = Credentials.from_service_account_file("key/key1.json")
service = build("sheets", "v4", credentials=creds)
spreadsheet = {
"properties": {
"title": "Nowy arkusz"
}
}
spreadsheet = service.spreadsheets().create(body=spreadsheet).execute()
spreadsheet_id = spreadsheet.get("spreadsheetId")
permission = {
'type': 'anyone',
'role': 'writer',
}
service.permissions().create(fileId=spreadsheet_id, body=permission).execute()
Error
line 36, in <module>
service.permissions().create(fileId=spreadsheet_id, body=permission).execute()
AttributeError: 'Resource' object has no attribute 'permissions'
Upvotes: 2
Views: 456
Reputation: 201603
In your script, I think that in order to create the permission, it is required to use build("drive", "v3", credentials=creds)
instead of build("sheets", "v4", credentials=creds)
.
When your script is modified, how about the following modification?
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from google.oauth2.service_account import Credentials
creds = Credentials.from_service_account_file(
"key/key1.json",
scopes=[
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/drive",
],
)
service = build("sheets", "v4", credentials=creds)
spreadsheet = {"properties": {"title": "Nowy arkusz"}}
spreadsheet = service.spreadsheets().create(body=spreadsheet).execute()
spreadsheet_id = spreadsheet.get("spreadsheetId")
drive = build("drive", "v3", credentials=creds)
permission = {
"type": "anyone",
"role": "writer",
}
drive.permissions().create(fileId=spreadsheet_id, body=permission).execute()
Upvotes: 2