burnash / gspread

Google Sheets Python API

Home Page:https://docs.gspread.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Update examples of gspread usage /Readme.md

lightdrk opened this issue · comments

Hi,

Their is no usage example of single cell update in the Read me as the example currently is not complete .
simple add worksheet.update_acell('A1', 'Bingo!') to the updating cell example

Hi. Thanks for the issue :)

Do you refer to this section of the readme?

gspread/README.md

Lines 263 to 267 in 4a48fbd

# Update a single cell
worksheet.update('B1', 'Bingo!')
# Update a range
worksheet.update('A1:B2', [[1, 2], [3, 4]])

I notice that this section is wrong. I think it should be

# Update a single cell
-worksheet.update('B1', 'Bingo!')
+worksheet.update_acell('B1', 'Bingo!')

# Update a range
-worksheet.update('A1:B2', [[1, 2], [3, 4]])
+worksheet.update([[1, 2], [3, 4]], 'A1:B2')

I think that all functions in the readme should be tested to make sure they work, as that is the most important part of documentation to get right. This could be as a part of #1413

Yes , dont know about range but yes for the single one

reopening as I don't think this is changed yet

commented

I have some problems with updating single cell.

from selenium import webdriver
from google.oauth2.service_account import Credentials
import gspread
from humanfriendly import parse_size
from selenium import webdriver
from selenium.webdriver.common.by import By
scopes = [
    'https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive'
]

credentials = {
 ******
}
likes=[]
comments=[]
saves=[]
shares=[]

gc = gspread.service_account_from_dict(credentials)
sht2 = gc.open_by_url('https://docs.google.com/spreadsheets/d/1zZFqgrN6A4JNIlftQgpbyMHBZadfefFWsU7LpL_BBrwQxu6E/edit?usp=sharing')
worksheet = sht2.get_worksheet(0)
worksheet.update('B1', 'Bingo!')

I got an error. I ever done this in the last week before but the scripts are working.

gspread.exceptions.APIError: {'code': 400, 'message': 'Invalid value at \'data.values\' (type.googleapis.com/google.protobuf.ListValue), "A2"', 'status': 'INVALID_ARGUMENT', 'details': [{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'field': 'data.values', 'description': 'Invalid value at \'data.values\' (type.googleapis.com/google.protobuf.ListValue), "A2"'}]}]}
PS C:\Users\Lenovo\Desktop\code\tiktoka-data-mcn>
PS C:\Users\Lenovo\Desktop\code\tiktoka-data-mcn>
PS C:\Users\Lenovo\Desktop\code\tiktoka-data-mcn>
PS C:\Users\Lenovo\Desktop\code\tiktoka-data-mcn> python '.\test,py'
Traceback (most recent call last):
  File "C:\Users\Lenovo\Desktop\code\tiktoka-data-mcn\test,py", line 34, in <module>
    worksheet.update('B1', 'Bingo!')
  File "C:\Users\Lenovo\AppData\Roaming\Python\Python311\site-packages\gspread\worksheet.py", line 1239, in update
    response = self.client.values_update(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Lenovo\AppData\Roaming\Python\Python311\site-packages\gspread\http_client.py", line 168, in values_update
    r = self.request("put", url, params=params, json=body)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Lenovo\AppData\Roaming\Python\Python311\site-packages\gspread\http_client.py", line 123, in request
    raise APIError(response)
gspread.exceptions.APIError: {'code': 400, 'message': 'Invalid value at \'data.values\' (type.googleapis.com/google.protobuf.ListValue), "B1"', 'status': 'INVALID_ARGUMENT', 'details': [{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'field': 'data.values', 'description': 'Invalid value at \'data.values\' (type.googleapis.com/google.protobuf.ListValue), "B1"'}]}]}

I have some problems with updating single cell.

Hi. Apologies for the delay.

Please change your code to

- worksheet.update("B1", "Bingo!")
+ worksheet.update_acell("B1", "Bingo!")

and let me know if this works?

We will update the readme to reflect this soon :)

Thanks.

p.s. to @lavigne958: are the arguments of update and update_acell different to one another? I feel the answer is yes.

yes they are ! 😞

the method update is

update(<values>, <range name>, ...)

the method `update_acell is

update_acell(<label>, <single value>)

nice how did this happen

nice how did this happen

I would say it's historic, left over from the past from this repository I suppose.