Это продолжение вопроса StackOverFlow.
В python можно ли редактировать общедоступный общий лист Google без кода авторизации?
Какие советы по использованию учетной записи службы g-suite для доступ к листам Google.
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ['https://www.googleapis.com/auth/spreadsheets']
credentials = ServiceAccountCredentials.from_json_keyfile_name('### downloaded JSON file ###', scope)
gc = gspread.authorize(credentials)
sht1 = gc.open_by_key('1wj9L7Hn779GKP0s4MblkU1wHcqaVcG_E2YKAo1vdof0')
Я сделал это, и я могу нормально читать значения с листа.
#Open by Gdrive ID
worksheet1 = gc.open_by_key('1qlIZAAK32fTb20KeOr9f-TAxYz7yQnvHUsdGP9Iakrc').sheet1
worksheet1.col_values(3)
>['value1', 'value2', 'value3']
Но когда я пытаюсь обновить ячейку, я получаю отказано в разрешении ошибка.
query = 'insert this'
worksheet1.update_cell(len(values_list)+1, 3, query)
Это вывод
---------------------------------------------------------------------------
APIError Traceback (most recent call last)
<ipython-input-9-9e7f86cb0411> in <module>()
----> 1 worksheet1.update_cell(len(values_list)+1, 3, query)
2 frames
/usr/local/lib/python3.6/dist-packages/gspread/models.py in update_cell(self, row, col, value)
737 },
738 body={
--> 739 'values': [[value]]
740 }
741 )
/usr/local/lib/python3.6/dist-packages/gspread/models.py in values_update(self, range, params, body)
174 """
175 url = SPREADSHEET_VALUES_URL % (self.id, quote(range))
--> 176 r = self.client.request('put', url, params=params, json=body)
177 return r.json()
178
/usr/local/lib/python3.6/dist-packages/gspread/client.py in request(self, method, endpoint, params, data, json, files, headers)
77 return response
78 else:
---> 79 raise APIError(response)
80
81 def list_spreadsheet_files(self):
APIError: {
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
Подробности и то, что я пробовал до сих пор.
В моей учетной записи службы используется тот же адрес электронной почты, что и в учетной записи Google Drive, которую я Я использую для размещения моих листов Google. Так что я должен иметь возможность редактировать лист из моей учетной записи службы.